Efficient mapping over indexed records in Mnesia
Sat Jun 27 01:22:29 CEST 2009
I have a problem very similar to the "Raise" example given in the
Mnesia manual. I would like to alter records (re-write), which hold a
specific secondary index.
So far the only ways I can achieve this are:
1) Gather candidates using index_read, and then fold over the list
applying my changes, and writing them back. The problem is that this
initial candidate result set could be massive, and I don't want to
hold it all in memory. As far as I know, there is no 'lazy' way of
walking over indexes.
2) Fold over the entire table. I haven't read the implementation, but
I assume this will solve the mem problem above, at the expense of many
times the number of disk seeks. In practice I imagine my partitions
will exceed no more than 20% of the table, making this approach quite
Is there anything better I can do with Mnesia?
More information about the erlang-questions