问题:
如何有效地从表中选择记录,其中选择基于涉及两个索引列的条件。
例子
我有记录,
#rec{key, value, type, last_update, other_stuff}
- 我在键(默认)、类型和 last_update 列上有索引
- 类型通常是原子或字符串
- last_update 是一个整数(自 1970 年以来的 unix 样式毫秒)
例如,我想要 type = Type 并且自特定时间戳以来已更新的所有记录。
我执行以下操作(包含在非脏事务中)
lookup_by_type(Type, Since) ->
MatchHead = #rec{type=Type, last_update = '$1', _= '_'},
Guard = {'>', '$1', Since},
Result = '$_',
case mnesia:select(rec,[{MatchHead, [Guard],[Result]}]) of
[] -> {error, not_found};
Rslts -> {ok, Rslts}
end.
问题
- lookup_by_type 函数甚至使用底层索引吗?
- 在这种情况下是否有更好的方法来利用索引
- 我应该采取完全不同的方法吗?
谢谢你们