Database / Mnesia basics Interview questions
What is mnesia:select/2 used for?
mnesia:select/2 queries a table using a match specification, letting you filter on conditions
beyond a simple primary-key lookup — the same match-spec mechanism ETS uses, run inside a Mnesia
transaction for consistency.
mnesia:transaction(fun() -> mnesia:select(person, [{#person{age = '$1', _ = '_'}, [{'>', '$1', 30}], ['$_']}]) end). %% returns every person record with age > 30
Where mnesia:read/1 only works by primary key, select/2 can filter on any field,
including combinations of conditions, at the cost of scanning more of the table (unless an index exists on the
filtered field). Like other match-spec code, it's often written using
ets:fun2ms/1-style helpers to avoid hand-crafting the raw match specification tuple.
More Related questions...