Ich benutze die folgende Abfrage innerhalb einer gespeicherten Prozedur, um das Ranking des Benutzers zu erhalten.Optimieren von Rang() Abfrage
Beim Versuch, die Datenbank zu optimieren, versuche ich festzustellen, ob diese Abfrage optimiert werden kann, da es die am häufigsten verwendete Abfrage in meiner Datenbank ist.
ID-Spalte ist indiziert.
SELECT
@p_rank = all_time_rank
FROM
(SELECT
user_rankings.*,
RANK() OVER (ORDER BY score DESC) AS all_time_rank
FROM
user_rankings) t
WHERE
id = @p_id;
Gibt es eine Möglichkeit, diese Abfrage zu erhalten, um besser zu funktionieren?
Vorzugsweise möchte ich die höchste Bewertung für den Benutzer erhalten. Wenn Nutzer mit 10-20 Punkten alle 1.000 Punkte erzielt haben, möchte ich 10 als Ergebnis anzeigen. –
@DNOeth das ist, was er will, der "RANK" dieser userId - es ist egal, wer es vor ihm ist, um diesen Rang zu erstellen – Cato
@Dnoeth - Ich habe nur gepostet, weil ich nichts nützliches hinzufügen kann – Cato