gpt4 book ai didi

sql-server - 为什么这个执行计划中排序运算符的成本如此之高?

转载 作者:行者123 更新时间:2023-12-02 18:28:25 25 4
gpt4 key购买 nike

execution plan

排序运算符表示它只有 100 行需要排序。这怎么可能比读取 190 万行更昂贵呢?我一定是读错了或者误解了某些东西。

另外,排序运算符中的每次执行的估计行数怎么只有 100?如果索引查找运算符估计每次执行的行数为 190 万行,那么如何仅将 100 行传送到排序运算符?

这是查询:

    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

最佳答案

排序运算符(与“前 N 排序”相对)将在返回任何行之前对其 open 方法中的整个输入进行排序。

SQL Server 估计查找将输出 190 万行进行排序。

因此,成本计算是针对 190 万行进行排序。

你在做什么

OFFSET 1000000 ROWS FETCH NEXT 1000 ROWS ONLY 

排序的实际输出行将至少为 1,​​001,000 ( maybe more in a parallel plan ),TOP 运算符会丢弃偏移量的前一百万行,然后在收到 1000 行后停止请求行被退回。

100 的估计值只是一个猜测,因为 SQL Server 不知道编译计划时运行时变量的值是多少。

关于sql-server - 为什么这个执行计划中排序运算符的成本如此之高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69772305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com