web-dev-qa-db-ja.com

SQL Serverのテーブルから行のインデックスを取得するにはどうすればよいですか?

Toplistテーブルがあり、ユーザーのランクを取得したいと思います。行のインデックスを取得するにはどうすればよいですか?

残念ながら、すべての行を取得し、forループでユーザーのIDをチェックインしています。これは、アプリケーションのパフォーマンスに大きな影響を与えます。

このパフォーマンスへの影響をどのように回避できますか?

6

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
13
Kay Nelson

ROW_NUMBER()MS SQL

コード分​​析関数で使用する

4
realnumber3012