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

执行计划类型

SQL Server 执行计划是已提交查询的执行路线图的图形表示,SQL Server 查询优化器将遵循该路线图。SQL Server 为我们提供了两种主要类型的执行计划。

  • 预估执行计划 : 它是通过解析提交的查询生成的计划,在不执行的情况下预估对查询将如何执行。
  • 实际执行计划: 它是通过执行提交的查询生成的,显示执行查询时遵循的实际步骤。

大多数情况下,数据库管理员更喜欢实际执行计划,因为它显示了有关查询执行统计信息的更多信息。但是对于一些需要很长时间运行的复杂查询,你可以在不实际执行的情况通过预估执行计划进行故障排除。但在某些情况下,由于实际表数据和统计信息之间的差异,预估执行计划和实际执行计划可能会有很大差异。频繁的数据插入和修改操作也会使统计数据不太准确。

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

无法生成估计执行计划

预估执行计划(Estimated Execution Plan)

预估执行计划可以通过一下几种方式查看:

  • 从查询(Query)菜单中选择Display Estimated Execution Plan选项,如下所示:
    从查询(Query)菜单中选择

  • 单击任务栏中的Display Estimated Execution Plan图标,如下所示:
    单击任务栏中图标

  • 右击查询编辑器,选择Display Estimated Execution Plan选项,如下图:
    右击查询编辑器

  • 键入Ctrl+L键盘快捷键,将显示已提交查询的估计执行计划,如下面的快照所示:
    快捷键查看

实际执行计划(Actual Execution Plan)

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

  • 从查询(Query)菜单中选择Include Actual Execution Plan选项,如下所示:
    从查询(Query)菜单中选择

  • 单击任务栏中的Include Actual Execution Plan图标,如下所示:
    单击任务栏中图标

  • 右键单击查询编辑器并选择Include Actual Execution Plan选项,如下所示:
    右键单击查询编辑器

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

实时执行统计信息(Live Execution Statistics)

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

可以通过一下方式显示实时查询统计信息:

  • 从查询(Query)菜单中选择Include Live Query Statistics选项,如下所示:
    从查询(Query)菜单中

  • 单击任务栏中的Include Live Query Statistics图标,如下所示:
    单击任务栏图标

  • 右键单击查询编辑器并选择Include Live Query Statistics选项,如下所示:
    右键单击查询编辑器

  • 打开活动监视窗口并右键单击目标查询,然后选择Show Live Execution Plan选项,如下所示:
    活动监视窗口

包含 Live Query Statistics 后,运行查询并监控查询的运行时执行统计信息以及数据在计算符之间的流动情况。示意图如下:
实时执行统计信息

执行计划格式

在 SQL Server 中,可以通过三种不同的方式查看为每个查询生成的执行计划,具体取决于您设法查看的详细级别和计划生成方法。三种执行计划格式是:

  • 图形格式:

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

  • 文本格式:

文本执行计划可以立即以文本视图提供关于目标查询的少量的执行信息。文本执行计划三种详细格式:

  • SHOWPLAN_ALL:显示查询的预估计划以及有关查询执行的完整信息集,如下所示:
    SHOWPLAN_ALL

  • SHOWPLAN_TEXT:显示查询的预估计划,其中有关查询执行的信息集非常有限,如下所示:
    SHOWPLAN_TEXT

  • STATISTICS PROFILE:显示查询的实际执行计划和完整的详细信息集,如下所示(注意查询结果的显示方式):
    STATISTICS PROFILE

  • XML 格式

    XML 计划为我们提供了一套完整的以 XML 结构查看的查询执行信息,这些信息难以阅读和分析,主要用于与其他专家共享以进行故障排除。

    XML 执行计划有两种详细格式:

    • SHOWPLAN_XML:显示查询的估计执行计划,如下所示(可以使用 Show Execution Plan XML 选项轻松地从图形计划中获得 XML 计划):
      SHOWPLAN_XML

    • STATISTICS XML:显示查询的实际执行计划,如下图:
      STATISTICS XML

至此,我们已经熟悉了 SQL Server 执行计划的不同类型和格式、这些类型和格式之间的差异以及我们如何从这些类型中获益。请继续关注下一篇文章,我们将在其中讨论执行计划的不同组件以及如何对其进行分析。

参考

系列目录

SQL Server 执行计划(1) - 概述
SQL Server 执行计划(2) - 如何查看执行计划
SQL Server 执行计划(3) - 如何分析图形执行计划
SQL Server 执行计划(4) - 执行计划运算符详解1
SQL Server 执行计划(5) - 执行计划运算符详解2
SQL Server 执行计划(6) - 执行计划运算符详解3
SQL Server 执行计划(7) - 执行计划运算符详解4
SQL Server 执行计划(8) - 使用执行计划进行查询性能调优
[SQL Server 执行计划(9) - 保存和比较执行计划]

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐