在第一个匹配的条目停止erlang qlc查询

时间:2013-09-16 13:54:18

标签: erlang mnesia

如何编写遍历表的qlc查询,直到找到第一个匹配的条目?例如,此查询返回表中符合条件的所有条目:

qlc:q([E#stuff.data || E <- mnesia:table(stuff), E#stuff.type == 123]).

如何修改此或qlc:e调用停止并仅返回第一个匹配的条目?这样做的动机是性能 - 我对所有条目都不感兴趣,只是想看一下特定类型的条目是什么样的。

1 个答案:

答案 0 :(得分:3)

您需要使用qlc cursorqlc:next_answers/2,请查看qlc:cursor/1中的示例。 它应该看起来像

QH=qlc:q([E#stuff.data || E <- mnesia:table(stuff), E#stuff.type == 123]).
QC = qlc:cursor(QH).
Result=qlc:next_answers(QC, 1). % Only return 1 answer
qlc:delete_cursor(QC).