Я использую следующий запрос в хранимой процедуре, чтобы получить рейтинг пользователя.Оптимизация запроса rank()
При попытке оптимизировать базу данных, я пытаюсь определить, можно ли оптимизировать этот запрос, поскольку это самый используемый запрос в моей базе данных.
столбец идентификатора.
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;
Есть ли способ, чтобы этот запрос работал лучше?
Желательно, я хотел бы получить наивысший рейтинг для пользователя. Если пользователи заняли 10-20, все набрали 1000 очков, я бы хотел отобразить 10 в результате. –
@dnoeth это то, что он хочет, хотя «RANK» этого пользователя - ему все равно, кто он впереди, чтобы создать этот ранг – Cato
@dnoeth - я только опубликовал это, потому что я не могу добавить ничего полезного – Cato