問題:
選択が 2 つのインデックス付き列を含む基準に基づいているテーブルから効率的にレコードを選択する方法。
例
記録がありますが、
#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 関数は基礎となるインデックスを使用していますか?
- この場合、インデックスを利用するより良い方法はありますか
- 私が取るべきまったく異なるアプローチはありますか?
皆さん、ありがとうございました