This question问如何通过他的ID选择用户的排名。数据库优化:计算排名
id name points
1 john 4635
3 tom 7364
4 bob 234
6 harry 9857
接受的答案是
SELECT uo.*,
(
SELECT COUNT(*)
FROM users ui
WHERE (ui.points, ui.id) >= (uo.points, uo.id)
) AS rank
FROM users uo
WHERE id = @id
这是有道理的。我想了解这种方法之间的性能折衷是什么,或者通过修改数据库结构来存储计算出来的排名(我想这会在每次排名发生变化时都需要进行大规模的更改)或者其他任何方法我觉得太新奇了。我是一个db noob。