4

現在、このSQLクエリは、私が決定した行から選択できます。しかし、これに対するより良いアプローチはありますか?

  select * from (select *, ROW_NUMBER() over (order by Id desc) as RowId 
                 from tblUsersMessages ) dt
  where RowId between 10 and 25
4

1 に答える 1

3

インデックスによって異なります。

場合によっては、この方がよい場合もあります

SELECT *
FROM   tblUsersMessages
WHERE  Id IN (SELECT Id
              FROM   (select Id,
                             ROW_NUMBER() over (order by Id desc) as RowId
                      from   tblUsersMessages) dt
              WHERE  RowId between 10 and 25)  

Id範囲内の値をすばやく見つけるために使用できる、より狭いインデックスが存在する場合。発生する可能性のある問題の種類を示す例については、こちらの回答を参照してください。

SET STATISTICS IO ON特定のケースの実行計画と出力を確認する必要があります。

于 2011-09-23T11:08:03.940 に答える