显示图形执行计划 (SQL Server Management Studio)

SQL Server Management Studio 是一个交互式图形工具,使数据库管理员或开发人员可以编写查询、同时执行多个查询、查看结果、分析查询计划以及获得提高查询性能的帮助。执行计划选项以图形方式显示 SQL Server 查询优化器所选择的数据检索方法。图形执行计划使用图标来表示 SQL Server 中特定语句和查询的执行,而不使用 Transact-SQL SET 语句选项 SET SHOWPLAN_ALL 或 SET SHOWPLAN_TEXT 生成的表格表示形式,也不使用 SET SHOWPLAN_XML 生成的 XML 表示形式。图形显示对于了解查询的性能特点很有用。SQL Server Management Studio 显示丢失了哪些统计信息,从而强制查询优化器估计谓词选择性,然后可以很容易地创建那些丢失的统计信息。

注意注意

不显示加密的存储过程或触发器的执行计划。

使用执行计划选项

打开或键入包含要在 Management Studio 查询编辑器中进行分析的查询的 Transact-SQL 脚本。将脚本加载到 Management Studio 查询编辑器后,通过单击查询编辑器工具栏上的**“显示估计的执行计划”“包括实际的执行计划”按钮,可以选择是显示估计的执行计划还是显示实际的执行计划。如果单击“显示估计的执行计划”,则将分析该脚本并生成估计的执行计划。如果单击“包括实际的执行计划”,则必须在生成执行计划之前执行该脚本。分析或执行脚本之后,请单击“执行计划”**选项卡以查看执行计划输出的图形表示形式。

若要使用 Management Studio 中的图形执行计划功能和 Transact-SQL SET Showplan 语句选项,用户必须拥有足够的权限来执行 Transact-SQL 语句和查询。对于包含被引用对象的所有数据库,用户还必须获得 SHOWPLAN 权限。有关详细信息,请参阅显示计划安全性

阅读图形执行计划输出

若要查看执行计划,请单击结果窗格中的**“执行计划”**选项卡。按照从右到左、从上到下的方式阅读 SQL Server Management Studio 中的图形执行计划输出。将显示所分析的批处理中的每个查询,包括每个查询的开销占批处理总开销的百分比。有关用于显示 Management Studio 中执行计划的图标的详细信息,请参阅图形执行计划图标 (SQL Server Management Studio)

以下说明提供了解释 Management Studio 中的图形执行输出的指南:

  • 树结构中的每个节点都以图标表示,指定用于执行部分查询或语句的逻辑和物理运算符。

  • 每个节点都与一个父节点相关。父节点相同的子节点被绘制在同一列中。但是,同一列中所有节点的父节点不一定相同。规则用箭头将每个节点连接到其父节点。

  • 运算符显示为与特定父节点相关的符号。

  • 箭头宽度与箭头数成正比。如果提供了实际箭头数,则使用该数目。如果未提供,则使用估计的箭头数。

  • 如果查询包含多个语句,则将绘制多个查询执行计划。

  • 树结构的各个部分由执行的语句类型决定。

  • 对于涉及多个 CPU 的并行查询,图形执行计划中每个节点的**“属性”将显示所用操作系统线程的相关信息。若要查看节点的属性,请右键单击该节点,再单击“属性”**。有关并行查询的详细信息,请参阅并行查询处理

    语句类型

    树结构元素

    Transact-SQL 和存储过程

    如果语句是存储过程或 Transact-SQL 语句,则该语句将成为图形执行计划树结构的根。存储过程可以有多个子级,用于表示存储过程调用的语句。每个子级是树的一个节点或分支。

    数据操作语言 (DML)

    如果 SQL Server 查询优化器分析的语句是一个 DML 语句(如 SELECT、INSERT、DELETE 或 UPDATE),则该 DML 语句是树根。DML 语句最多可以有两个子级。第一个子级是 DML 语句的执行计划。如果用在语句中,则第二个子级是触发器。

    条件

    图形执行计划将 IF...ELSE 语句这类条件语句(如果条件存在,转而执行后面的语句,否则执行此语句)划分为三个子级:IF...ELSE 语句是树根;IF 条件是子树节点;THEN 和 ELSE 条件表示为语句块。WHILE 和 DO-UNTIL 语句使用相似的计划表示。IF 和 WHILE 具有各自的图标。

    关系运算符

    由查询引擎执行的操作(如表扫描、联接和聚合)表示为树上的节点。

    DECLARE CURSOR

    DECLARE CURSOR 语句是图形执行计划树的根,与之相关的语句为子级或节点。

每一种颜色都与三种图标类型的其中一种进行了关联:迭代器(逻辑和物理迭代器)图标为蓝色,游标图标为黄色,语言元素为绿色。

图形执行计划节点工具提示

当游标指向每个节点时,该节点将显示下表中所述的工具提示信息。并非图形执行计划中的所有节点都包含此处介绍的全部工具提示项。

工具提示项

说明

Physical Operation

使用的物理运算符,例如 Hash Join 或 Nested Loops。以红色显示的物理运算符表示查询优化器已发出警告,例如丢失列统计信息或丢失联接谓词。这可能导致查询优化器选择比预期的效率低的查询计划。有关列统计信息的详细信息,请参阅使用统计信息提高查询性能

当图形执行计划建议创建统计信息、更新统计信息或创建索引时,使用 SQL Server Management Studio 对象资源管理器中的快捷菜单可以立即创建或更新丢失的列统计信息和索引。有关详细信息,请参阅索引操作指南主题

Logical Operation

与物理运算符匹配的逻辑运算符,如 Inner Join 运算符。逻辑运算符列在物理运算符之后,两者均位于工具提示的顶部。

Estimated Row Size

操作符生成的行的估计大小(字节)。

Estimated I/O Cost

用于执行操作的所有 I/O 活动的估计开销。此值应尽可能低。

Estimated CPU Cost

用于执行操作的所有 CPU 活动的估计开销。

Estimated Operator Cost

用于执行此操作的查询优化器的开销。此操作的开销以占查询总开销的百分比的形式显示在括号中。由于查询引擎选择最高效的操作来执行查询或执行语句,因此此值应尽可能低。

Estimated Subtree Cost

查询优化器执行此操作及同一子树内位于此操作之前的所有操作的总开销。

Estimated Number of Rows1

运算符生成的行数。

1 此工具提示项在实际执行计划中显示为 Number of Rows

注意注意

在 SQL Server 2000 中,图形执行计划的各“参数”字段中可用的信息现在单独显示在图形执行计划的工具提示中。

图形执行计划节点属性

可以通过右键单击节点,再单击**“属性”**,来查看图形执行计划中节点的详细信息。