ストアドプロシージャ内で次のクエリを使用して、ユーザーのランキングを取得しています。rank()クエリの最適化
データベースの最適化を試みている最中に、このクエリをデータベースで最もよく使用されるクエリとして最適化できるかどうかを判断しようとしています。
idカラムがインデックスに登録されています。
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位のユーザーがすべて1,000点を獲得した場合、結果として10を表示したいと思います。 –
@dnoethそれは彼が望んでいるものだが、そのuserIdの 'RANK' - 彼はそのランクを作るために彼が先んじている人を気にしない。 – Cato
@dnoeth - 私は何も役に立たないので投稿した。 – Cato