私は実行計画について学び、さまざまなクエリを試し、それらのパフォーマンスを比較して、これに遭遇しました:
SELECT StatisticID
FROM (
SELECT StatisticID, ROW_NUMBER() OVER (ORDER BY StatisticID) AS rn
FROM FTCatalog.Statistic
) AS T
WHERE T.rn <= 1000
ORDER BY rn
SELECT TOP 1000 StatisticID
FROM FTCatalog.Statistic
ORDER BY StatisticID
どちらも同じ結果セットを返しますが、最初の方が実行速度が速く、リソースの消費量も少なくなります(少なくともSSMSはそれを教えてくれます)。ここでは実行計画を示します。
SQLクエリプランエクスプローラーとの比較: 実際に舞台裏で何が起こっているのか、なぜ結果が異なるのかについて誰かに洞察を与えることはできますか?他に必要なものがあれば、お知らせください。
ありがとう、エヴァルダス。
何らかの理由で、SQL Serverにはページングクエリ用の適切なクエリリライトがありません。このような一般的なケースでは、計画と見積もりのこれらの違いは存在しないはずです。
—
usr