估计执行计划与实际执行计划之间的差异


8

我是SQL Server的新手,我想调整我的第一个查询。

在SQL Server 20xx中,“显示估计的执行计划”和“包括实际的执行计划”之间有什么区别?

Answers:


6

估计而不实际执行查询-执行计划是完全基于统计数据的SQL Server已经产生。只是询问查询优化器,它基于有关查询和数据分布等的所有信息,将最有可能对该查询执行什么操作。

这样就可以了,查询不需要运行(这可能需要很长时间),但是如果统计信息已过期,则该计划可能会严重扭曲。

实际的执行计划就是这样-在实际实际运行查询时所使用的执行计划。这将向您显示可能暗示“过期”统计信息的内容。但是,要获取此信息,您必须运行查询-这可能需要很长时间。


1
我会认为,这里唯一真正的问题是,在这种情况下,实际计划不是估计的计划。其余的很明显,不是吗?
约翰·

通过查询优化器并执行查询后,一个快速的问题是,如果缓存的计划已过时,查询优化步骤是否会重新执行更新统计信息?还是有另一种方式来生成执行计划?
brykneval

1

估计的计划将为您提供如何在不实际运行查询的情况下在服务器上执行查询。这将使您了解是需要调整以创建更好的计划还是估计的计划看起来不错。

实际计划显示服务器执行查询时实际发生的情况。它包括详细信息,例如表的实际行数,排序时使用了多少内存,执行期间使用了多少并行度。

但是最好的办法是查看实际执行计划中可以看到的“估计的行数”和“实际的行数”之间的差异。这两个值越接近意味着统计数据是最新的,对于给定的统计数据,这是最好的计划。但是,如果这两个值之间存在很大差异,则可能是统计数据不是最新的,因此可能不是最佳计划。在这种情况下,更新统计信息将有助于生成更好的估算计划,从而生成实际计划。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.