我有查詢按頁碼如下獲取記錄,爲什麼我的查詢速度慢以獲取大偏移量的記錄?
SELECT
FirstName = R.FirstName,
LastName = R.LastName,
CountryId = R.CountryID,
......
FROM Resource AS R
WHERE ...
ORDER BY LastName, FirstName
OFFSET 10 * (@PageNumber - 1) ROWS
FETCH NEXT 10 ROWS ONLY
的記錄總數超過30,000。
- 當
@PageNumber = 1
,運行時間小於1秒,幾乎立即。 - 當
@PageNumber = 500
,運行時間約爲4s。 - 當
@PageNumber = 1000
,運行時間小於12s。 - 當
@PageNumber = 2000
,運行時間少於20s。 - 當
@PageNumber = 3000
時,運行時間小於28s。
我想知道爲什麼獲取記錄的偏移量比較小的記錄要慢得多,因爲獲取的行的總數是相同的(10)。它看起來像查詢前面的記錄比坐在後面的記錄快得多。或者在查詢中有什麼問題?
你看執行計劃嗎?它說什麼? – peterm