【问题标题】:Does Erlang Mnesia select on an ordered_set give a list in Erlang Term order?Erlang Mnesia select on an ordered_set 是否给出了 Erlang Term 顺序的列表?
【发布时间】:2021-05-28 22:13:30
【问题描述】:

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

【问题讨论】:

    标签: select erlang mnesia ordered-set


    【解决方案1】:

    我可以使用select 并依赖它被订购(假设ordered_set 表)

    ets:select/2:

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

    ets:first/1:

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

    Table Traversal:

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 2017-03-25
      • 2012-10-11
      • 1970-01-01
      • 2014-06-06
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      相关资源
      最近更新 更多