我的模型在排名列表中有一个位置(或得分,一个浮点数)。例如,我有:
对象A,得分27.7
对象B,得分20.3
对象C,得分15.3
其中A被认为是#1的位置,B是#2,C在排名列表中是#3。
我正在尝试根据他们的分数有效地确定任何对象的位置,以及在该对象上方/下方的X对象。我可以构建一个宝石或查询吗?我可以加载所有对象并遍历它们,但是我想找到一种更有效的方法,因为我有数千个对象。
答案 0 :(得分:3)
所有关于权衡(就像这个世界上的一切)。
准确性超过效率。
最简单的解决方案是将所有记录拉入内存并在那里找出排名。或者你可以编写一个不那么复杂的SQL查询。
效率高于准确性。
预先计算排名(将其存储在列中)并运行常规作业以刷新它。拿这个网站。联赛排名每天更新一次。它的工作速度非常快。 : - )
内存消耗的准确性和效率以及管理的简单性。
设置Redis的实例。它对已排序的集合具有快速操作。您将使用更复杂的代码,项目中更多移动部件以及增加内存消耗来支付费用。