在恒定时间内查找Mnesia中列的最大/最小值

Mag*_*ist 4 erlang mnesia

如何在恒定时间(或尽可能接近)中找到Mnesia表中索引列的最大值或最小值?

I G*_*ERS 5

我会在Mnesia数据库之外做.保留一个explicit-min和explicit-max,通过一个进程在每次插入表时学习这些值.这样可以非常快速地对值进行恒定时间查找.

如果你可以使用O(lg n)时间,那么你可以使表成为ordered_set.从那里,first/1并且last/1应该给你你想要的东西,因为钥匙包含你所订购的东西.但这也会将其他查询的速度降低到O(lg n).

第三个技巧是通过近似值.偶尔扫描一下表并记下最大值和最小值.然后,这将实现您想要的内容,但如果您上次扫描已经过了很长时间,那么该值可能不会达到日期.