我正在开发一个 iPhone 应用程序,它需要一个存储在远程服务器上的高分系统。
如果您在列表中排在第 500 位,您应该会在屏幕上看到第 495 到 505 位。
编辑(忘了提及):您可以在多个列表中,例如列表“伦敦”、“超级英雄团队”和“小说迷”。如果有数百万用户和数千个组,我如何最有效地在我的所有列表中选择我的展示位置周围的 10 个位置?
我想到了以下几点:
- 每个列表选择一个:
select * from scores where list = '$list' order by points desc limit $myplace-5, 10
- 一次选择所有列表:
select * from scores where list in ($lists) order by list, points desc
然后使用 PHP 选择正确的位置
随着所有新的数据库类型(NoSQL 等)的出现,是否有适合此问题的数据库类型?
例如,从一开始就将您的分数插入正确的位置,这样每个select
人都不必对数据进行排序?
还是一种快速选择您所在位置周围 10 个位置的方法?(如果我刚刚选择了正确的行,则实际的排序可能发生在客户端)