This question fragt, wie man den Rang eines Benutzers anhand seiner ID auswählt.db-optimierung: computing rank
id name points
1 john 4635
3 tom 7364
4 bob 234
6 harry 9857
Die akzeptierte Antwort ist
SELECT uo.*,
(
SELECT COUNT(*)
FROM users ui
WHERE (ui.points, ui.id) >= (uo.points, uo.id)
) AS rank
FROM users uo
WHERE id = @id
, die Sinn macht. Ich würde gern verstehen, was die Performance-Kompromisse sein würden, zwischen diesem Ansatz oder durch Modifizieren der db-Struktur, um einen berechneten Rang zu speichern (ich nehme an, dass jedes Mal massive Änderungen erforderlich wären, wenn eine Rangänderung stattfindet) oder andere Ansätze, die ich bin zu neu, um daran zu denken. Ich bin ein db noob.