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。