Performance ETS有序_集与有效分页

Performance ETS有序_集与有效分页,performance,erlang,pagination,ets,Performance,Erlang,Pagination,Ets,我将{Key,Value}数据保存在ETS有序集中,其中Key是日期时间。选择给定时间内的所有项目非常容易 诸如此类: ets:select(Tab, [{{'$1', '$2'}, [{'>=', '$1', From}, {'=<', '$1', To}], ['$2']}]) 问题是如何有效地仅为给定页面选择项目 我知道select()。我只有一个页码 可能,我必须使用其他数据结构。请推荐更好的解决方案。由于ets匹配不够智能,即使您的第一次选择也无效。遵循此操作。是否有其他

我将
{Key,Value}
数据保存在ETS
有序集
中,其中
Key
是日期时间。选择给定时间内的所有项目非常容易

诸如此类:

ets:select(Tab, [{{'$1', '$2'}, [{'>=', '$1', From}, {'=<', '$1', To}], ['$2']}])
问题是如何有效地仅为给定页面选择项目

我知道
select()。我只有一个页码


可能,我必须使用其他数据结构。请推荐更好的解决方案。

由于ets匹配不够智能,即使您的第一次选择也无效。遵循此操作。

是否有其他数据结构可以在O(logN)中进行选择?也许是gb_树?@Stas:如果您使用
next
+
lookup
Robert的建议,您将得到与任何其他O(logN)结构相同的结果。唯一的缺点是您需要将最后一个键存储在页面上才能进一步移动。@Stas:
ordered\u set
是O(logn),gb\u树也是。Gb_树允许您跨过表格,但只能从一开始就开始。你的桌子有多大?这将决定哪些数据结构适合您使用。
Offset = Limit * PageNumber - Limit