我正在制作排名应用,并以这种方式获得用户在排名中的位置:
$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";
这是应该工作,但有一个垮台。如果我有500.000个用户的排名,那么查询会变得非常繁重。然后它必须遍历所有高于235的用户。让我们说235给出一个#345.879的位置。多数行......我怎么能以更好的方式做到这一点?至少我打电话给db?
希望提前4点帮助并提前致谢: - )
答案 0 :(得分:1)
可能(或可能会或可能不会根据情况将它们组合在一起)的3种可能的解决方案
如果是通用排名页面,您可以使用模板引擎预渲染页面并缓存它
您可以使用更多内存或配置查询缓存来优化您的mysql性能。临时表