以最佳方式获取用户当前位置


Get users current position the best way

我正在制作一个排名应用程序,并通过以下方式获得用户在排名中的位置:

$sql = "SELECT fk_player_id FROM ".$prefix."_publicpoints
            WHERE date BETWEEN '2013-01-01' AND '2013-12-31'
                GROUP BY fk_player_id
            HAVING SUM(points) > 235";

这是应该的,但有一次失败了。如果我有一个拥有500000用户的排名,那么查询可能会变得相当繁重。然后它必须遍历所有得分高于235的用户。让我们假设235给出的位置是#345.879。有很多排。。。我怎样才能用更好的方式做到这一点?至少我什么时候打电话给数据库?

希望4帮助和感谢提前:-)

3种可能的解决方案,根据的情况,这些解决方案可以(或可以或不可以)组合在一起

  • 将索引添加到排名列
  • 仅在列组更改时预计算列组
  • 使用cron作业预先计算排名-如果晚了10分钟也没关系

如果它是一个通用排名页面,您可以使用模板引擎预渲染页面,并将其缓存为

您可能还可以通过更多的ram或配置查询的缓存来优化mysql的性能;温度表