ETS ordered_set和有效分页

时间:2011-11-03 14:22:02

标签: performance erlang pagination ets

我将{Key, Value}数据保留在ETS ordered_set中,其中Key是日期时间。在给定时间内[From, To]选择所有项目非常容易。

类似的东西:

ets:select(Tab, [{{'$1', '$2'}, [{'>=', '$1', From}, {'=<', '$1', To}], ['$2']}])

我们在Limit函数中有select()参数,因此我们可以限制要选择的项目数。但是如何指定偏移?

作为输入,我的模块接收时间间隔和页码。我的目标是返回指定时间间隔和页面的项目。页面大小(Limit)是一个常量。我可以计算偏移量

Offset = Limit * PageNumber - Limit

问题是如何才能有效地为给定页面选择项目?

我知道select()函数可以接收Continuation参数,但我没有先前选择的状态。我只有一个页码。

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

1 个答案:

答案 0 :(得分:0)

即使你的第一个选择也无效,因为ets匹配不够智能。请遵循此discussion