
該排序操作者表示,其只得到了100行進行排序。這怎么可能比讀取 190 萬行更昂貴?我一定是讀錯了或誤解了某些東西。
另外,排序運算子中每次執行的估計行數如何僅為 100?如果Index Seek運算子估計每次執行的行數為190 萬,那么如何僅將 100 行通過管道傳輸到 Sort 運算子?
這是查詢:
DECLARE @PageIndex INT = 1000;
DECLARE @PageCount INT = 1000;
SELECT ID
FROM dbo.Table1
WHERE DateCreated >= '2021-10-27'
AND
DateCreated < '2021-10-28'
ORDER BY ID
OFFSET @PageIndex * @PageCount ROWS FETCH NEXT @PageCount ROWS ONLY
uj5u.com熱心網友回復:
Sort 運算子(與“Top N Sort”相反)將在回傳任何行之前對其 open 方法中的整個輸入進行排序。
SQL Server 估計搜索將輸出 190 萬行進入排序。
因此,成本是對 190 萬行進行排序。
你在做
OFFSET 1000000 ROWS FETCH NEXT 1000 ROWS ONLY
排序的實際輸出行將至少為 1,??001,000(在并行計劃中可能更多),并且TOP操作員丟棄偏移量的前一百萬行,然后在收到要回傳的 1000 行后停止請求行。
的估計100只是一個猜測,因為 SQL Server 不知道在編譯計劃時變數在運行時的值是什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/341836.html
標籤:sql-server 短信
