現在、このSQLクエリは、私が決定した行から選択できます。しかし、これに対するより良いアプローチはありますか?
select * from (select *, ROW_NUMBER() over (order by Id desc) as RowId
from tblUsersMessages ) dt
where RowId between 10 and 25
現在、このSQLクエリは、私が決定した行から選択できます。しかし、これに対するより良いアプローチはありますか?
select * from (select *, ROW_NUMBER() over (order by Id desc) as RowId
from tblUsersMessages ) dt
where RowId between 10 and 25
インデックスによって異なります。
場合によっては、この方がよい場合もあります
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
特定のケースの実行計画と出力を確認する必要があります。