Toplist
テーブルがあり、ユーザーのランクを取得したいと思います。行のインデックスを取得するにはどうすればよいですか?
残念ながら、すべての行を取得し、forループでユーザーのIDをチェックインしています。これは、アプリケーションのパフォーマンスに大きな影響を与えます。
このパフォーマンスへの影響をどのように回避できますか?
ROW.NUMBERを使用できます
これはMySQLの構文例です
SELECT t1.toplistId,
@RankRow := @RankRow+ 1 AS Rank
FROM toplist t1
JOIN (SELECT @RankRow := 0) r;
これはMsSQLの構文例です
SELECT ROW_NUMBER() OVER(ORDER BY YourColumn) AS Rank,TopListId
FROM TopList
コード分析関数で使用する