6

我想了解查询计划中似乎弄乱了我的查询的部分。

在此处输入图像描述

图片显示有一个聚集索引查找,然后是计算标量,然后是排序。我不明白的部分是,如果计算标量的估计行数是 327,561,那么为什么排序的估计行数只有 14?它是否假设 Compute Scalar 仅返回 14 个结果,即使它的输入估计为 327,561 行?

我尝试在 register_hdrs 表 'WITH SAMPLE 100 PERCENT' 上运行更新统计信息,它似乎根本没有改变行为。建议的索引提高了“聚集索引查找”的性能,但排序仍然估计行数为 14,因此查询计划保持不变。我需要做的是选择另一条路径,查询中还有另一个表格,当挑选时,查询速度约为14次(它从14-15秒内运行到1秒钟)。我认为低估排序中的行数是问题所在,也是选择慢速计划的原因。

我不想更改查询,因为应用程序以特定方式生成它,此时无法更改它。我正在研究如何强制 SQL Server 更好地估计排序中的行,我相信这会导致 SQL Server 选择不同的执行计划。

4

0 回答 0