代码改变世界

【SQLServer】SQLServer执行计划的类型

2022-09-23 08:37  abce  阅读(569)  评论(0编辑  收藏  举报

1.【SQLServer】SQLServer执行计划概览

 

在上一篇文章中,我们详细描述了提交的SQL Server查询所经历的不同阶段以及SQL Server关系引擎如何处理它。SQL Server关系引擎生成执行计划,SQL Server存储引擎执行请求的数据检索或修改过程。在本文中,我们将讨论SQL Server执行计划的不同类型和格式。

执行计划类型

SQL Server执行计划是提交查询的执行路线图的图形表示,SQL Server查询优化器将遵循该路线图,以及执行查询代码的每个部分的成本。SQL Server为我们提供了两种主要类型的执行计划。

第一种类型:估计的执行计划。它是通过将提交的查询解析为查询将如何执行而不被真正执行的估计而生成的计划。

第二种类型:实际的执行计划,它是通过执行提交的查询生成的,显示执行查询时遵循的实际步骤。

大多数情况下,实际执行计划是数据库管理员的首选,因为它显示了有关查询执行统计信息的更多信息。你可以从估计的执行计划中受益,以解决需要很长时间运行的复杂查询,将能够在不需要执行的情况下生成执行计划。但在某些情况下,由于实际表数据和统计数据之间的差异,估计和实际执行计划可能会有很大差异。频繁的数据插入和修改操作也会降低统计数据的准确性。

可以通过更新表或索引的统计信息来解决此问题。在某些情况下,当查询有一个尚未创建的临时表时,将无法生成估计执行计划,因为没有执行查询来创建临时表,从而导致如下错误消息:

 

估计的执行计划可以用多种方式来查看:

1.在Studio中,“查询”菜单中,选择“显示估计的执行计划”,如下所示:

2.点击“显示估计的执行计划”,如下所示:

3.右击查询编辑器,选择“显示估计的执行计划”,如下所示:

4.使用快捷键“Ctrl+L

Actual Execution Plan与Estimated Execution Plan不同,不能直接显示。它需要执行提交的查询才能显示。可以使用不同的方式将实际执行计划包含在查询中:

1.在Studio中,“查询”菜单中,选择“包括实际的执行计划”,如下所示:

2.点击快捷图标,“包括实际的执行计划”,如下所示:

3.右击查询编辑器,选择“包括实际的执行计划”,如下所示:

4.使用快捷键“Ctrl+M”

键入Ctrl+M快捷键,将包括提交查询的实际执行计划。换句话说,将对该查询或在该窗口中执行的任何查询打开“实际执行计划”选项。执行查询时,将显示实际执行计划,如下面的快照所示:

在SQL Server 2016中,Microsoft引入了一项新功能,使我们能够监控执行计划中每个操作的运行时统计信息,也称为实时执行统计信息,并在执行计划期间跟踪不同操作之间的数据流,查询执行过程,执行统计包括处理的行数、每个操作消耗的时间和查询执行的整体进度。

实时查询统计信息可以以不同的方式查看:

1.在Studio中,“查询”菜单中,选择“包括实时查询统计信息”,如下所示:

2.任务栏点击“包括实时查询统计信息”,如下所示:

3.右击查询编辑器,选择“包括实时查询统计信息”,如下所示:

4.打开"活动和监视器",右击目标查询:

效果如下所示:

 

执行计划的格式

有三种格式显示执行计划。

1.图形格式

SQL Server执行计划的图形视图是最常见和最友好的计划格式,它为我们提供了一种快速简便的方法来阅读和分析计划。图形视图包括本文前面讨论的实际、估计和实时查询统计计划。执行计划的图形格式唯一的缺点是执行细节隐藏在计划箭头和操作符属性后面,如下图:

 

2.文本格式(有三种形式)

(1)showplan_all

显示的是预估的执行计划。信息较全。

(2)showplan_text

显示的是预估的执行计划,信息较少

(3)STATISTICS PROFILE

显示的是真正的执行计划

3.xml格式(有两种形式)

(1)SHOWPLAN_XML

显示的是预估的执行计划

(2)STATISTICS XML

显示的是真正的执行计划

 

本文地址:https://www.cnblogs.com/abclife/p/16698166.html

原文地址:https://www.sqlshack.com/sql-server-execution-plans-types/