Erlang Mnesia 是否在ordered_set 上选择以Erlang 术语顺序给出列表?

问题描述

在文档中,我不清楚是否需要按 next 或 foldl 的顺序进行迭代(提到 foldr 与ordered_set 的顺序相反,因此推测 foldl 的顺序相同)或如果我可以使用 select 并依赖它被排序(假设ordered_set 表)

解决方法

我可以使用 select 并依赖它被排序吗(假设ordered_set 表)

ets:select/2

对于ordered_set 类型的表,对象的访问顺序与第一次/下一次遍历的顺序相同。这意味着比赛 规范是针对具有第一个/下一个键的对象执行的 order 和对应的结果列表就是按照那个顺序 执行

ets:first/1

返回表 Tab 中的第一个键 Key。对于ordered_set 表, 返回 Erlang 术语顺序中的第一个键

Table Traversal

使用 matchselect 函数的遍历可能不需要扫描 整个表取决于键的指定方式。一场比赛 具有完全绑定键(没有任何匹配变量)的模式将 将操作优化为没有任何表的单键查找 遍历。对于ordered_set,部分绑定的键将限制 遍历以仅扫描基于术语顺序的表的子集。

ordered_set 类型的表以随机顺序返回搜索结果对我来说毫无意义。