Erlang-在Mnesia中是否有类似于mysql中ORDER BY的内容?

Erlang-在Mnesia中是否有类似于mysql中ORDER BY的内容?,erlang,mnesia,Erlang,Mnesia,我可以对从mnesia获得的数据进行排序,但我想知道在从mnesia查询时是否可以对数据进行排序,类似于在mysql中使用order BY如果您已按键排序。否则,您可以使用列表:sort/2。对于通过复杂结构内部的一个键或许多这样的键进行排序,您可以使用列表:sort/1和两个列表:map/2或列表理解的组合来加速排序。对于较大的数据量,< P>最直接的方法是使用 OrdEdTySt/表类型。但是,在Mnesia中,有序集合表格的时间复杂度比集合表格的时间复杂度要高,这一点很有用 设置 有序集

我可以对从mnesia获得的数据进行排序,但我想知道在从mnesia查询时是否可以对数据进行排序,类似于在mysql中使用order BY

如果您已按键排序。否则,您可以使用
列表:sort/2
。对于通过复杂结构内部的一个键或许多这样的键进行排序,您可以使用
列表:sort/1
和两个
列表:map/2
或列表理解的组合来加速排序。对于较大的数据量,

< P>最直接的方法是使用<代码> OrdEdTySt/<代码>表类型。但是,在Mnesia中,
有序集合
表格的时间复杂度比
集合
表格的时间复杂度要高,这一点很有用

设置 有序集

如果<代码>有序的SETSET/<代码>表的成本是不可容忍的,您可以考虑使用<代码> SET表,并使用一种算法来排序您的记录。例如,一个简单且粗略的方法可以是存储一个记录计数器,以跟踪记录的顺序,然后在写入记录时对记录进行排序。按顺序写入它们或使用事务来避免竞争条件是很重要的。读取时,您可以根据在写入阶段确定的顺序逐个获取所需的记录

| Operation | Average | Worst Case |
|:---------:|:-------:|:----------:|
| Space     | O(n)    | O(n)       |
| Search    | O(1)    | O(n)       |
| Insert    | O(1)    | O(n)       |
| Delete    | O(1)    | O(n)       |
| Operation | Average  | Worst Case |
|:---------:|:--------:|:----------:|
| Space     | O(n)     | O(n)       |
| Search    | O(log n) | O(n)       |
| Insert    | O(log n) | O(n)       |
| Delete    | O(log n) | O(n)       |