Sch*_*iss 3 php mysql database ranking
我有一个排行榜,其中有一个"得分"列.我在得分列上也有一个索引,这使得我可以非常快速地按照分数对表格进行排序,甚至可以排除前十或任意数量的分数 - 即使有500万行!
但是,我真正想要的是在排行榜中显示球员"排名".我已经尝试了一些方法,但是当处理超过100000行时,它们似乎都没有堆叠(它们开始占用超过半秒,考虑到我期待数百名cuncurrent用户,这太长了).
我目前正在使用以下查询来确定一个用户的排名,然后在我的输出中为这些用户增加simlpy - 但这很慢.
SELECT tro.score, tro.userId,
(
SELECT count(*)
FROM scoreboard tri
WHERE tri.score >= :score
) AS rank
FROM test_tracks tro
WHERE userId = :userID");
Run Code Online (Sandbox Code Playgroud)
我正在考虑生成一个排名表,以便在他们将新分数插入记分板时"缓存"用户排名,但即使生成这个也需要很长时间(分钟,可能是几小时).
有谁知道建立排名的任何好的指南或技巧?我希望能够对结果进行总结,但即使只是建立当前的排名也足够了!
提前致谢!