zoukankan      html  css  js  c++  java
  • SQL SERVER 执行计划各字段注释

    SET SHOWPLAN_ALL
    使 Microsoft® SQL Server™ 不执行 Transact-SQL 语句。相反,SQL Server 返回有关语句执行方式和语句预计所需资源的详细信息。
    语法
    SET SHOWPLAN_ALL { ON | OFF }
    注释
    SET SHOWPLAN_ALL 的设置是在执行或运行时设置,而不是在分析时设置。
    当 SET SHOWPLAN_ALL 为 ON 时,SQL Server 返回每个语句的执行信息但不执行语句,而且 Transact-SQL 语句将不执行。将该选项设置为 ON 后,将返回有关所有后续 Transact-SQL 语句的信息,直到将该选项设置为 OFF 为止。例如,如果在 SET SHOWPLAN_ALL 为 ON 时执行 CREATE TABLE 语句,则 SQL Server 从涉及同一个表的后续 SELECT 语句返回错误信息;指定的表不存在。因此,对该表的后续引用将失败。当 SET SHOWPLAN_ALL 为 OFF 时,SQL Server 执行语句但不生成报表。
    SET SHOWPLAN_ALL 是供为处理其输出而编写的应用程序使用的。使用 SET SHOWPLAN_TEXT 返回可由 Microsoft MS-DOS® 应用程序(如osql 实用工具)读取的输出。
    在存储过程内不能指定 SET SHOWPLAN_TEXT 和 SET SHOWPLAN_ALL,它们必须是批处理中的语句。
    SET SHOWPLAN_ALL 将信息作为行集返回,行集形成一个层次结构树,用以表示 SQL Server 查询处理器在执行每个语句时所采取的步骤。输出中反映的每个语句都包含一个含有语句文本的行,后面跟有几个含有执行步骤详细信息的行。下表显示输出中包含的列。
    列名 描述
    StmtText 对于不是 PLAN_ROW 类型的行,该列包含 Transact-SQL 语句的文本。对于 PLAN_ROW 类型的行,该列包含对操作的描述。该列包含物理运算符,也可以选择包含逻辑运算符。该列还可以跟有由物理运算符决定的描述。有关更多信息,请参见逻辑运算符和物理运算符。
    StmtId 当前批处理中的语句数。
    NodeId 当前查询内的节点 ID。
    Parent 上一级步骤的节点 ID。
    PhysicalOp 节点的物理实现算法。仅限于 PLAN_ROWS 类型的行。
    LogicalOp 该节点表示的关系代数运算符。仅限于 PLAN_ROWS 类型的行。
    Argument 提供有关所执行操作的辅助信息。该列的内容取决于物理运算符。
    DefinedValues 包含该运算符所引入值的用逗号分隔的列表。这些值可以是出现在当前查询(例如,在 SELECT 列表或 WHERE 子句中)内的计算表达式,或者是由查询处理器为处理该查询而引入的内部值。以后在该查询内的任何其它地方都可以引用这些定义的值。仅限于 PLAN_ROWS 类型的行。
    EstimateRows 由该运算符输出的预计行数。仅限于 PLAN_ROWS 类型的行。
    EstimateIO 该运算符的预计 I/O 成本。仅限于 PLAN_ROWS 类型的行。
    EstimateCPU 该运算符的预计 CPU 成本。仅限于 PLAN_ROWS 类型的行。
    AvgRowSize 正通过该运算符传递的行的预计平均行大小(以字节为单位)。
    TotalSubtreeCost 该操作和所有下一级操作的预计(累积)成本。
    OutputList 包含当前操作所计划的列的用逗号分隔的列表。
    Warnings 包含与当前操作相关的警告信息的用逗号分隔的列表。警告信息可以在列的列表中包含字符串"NO STATS:()"。该警告信息表示查询优化器曾尝试根据该列的统计做决策,但没有可用的统计。因此,查询优化器不得不进行推测,这可能已导致选择低效的查询计划。有关创建或更新列统计(这些统计有助于查询优化器选择更高效的查询计划)的更多信息,请参见UPDATE STATISTICS。该列可以选择包含字符串"MISSING JOIN PREDICATE",这表示正在进行的联接(与表有关)未使用联接谓词。意外地除去联接谓词可能导致查询的时间比预期长得多,并返回巨大的结果集。如果出现该警告,请验证是否有意除去了联接谓词。
    Type 节点类型。对于每个查询的父节点,这是 Transact-SQL 语句类型(如 SELECT、INSERT、EXECUTE 等)。对于表示执行计划的子节点,这是 PLAN_ROW 类型。
    Parallel 0 = 运算符没有以并行方式运行。1 = 运算符正在以并行方式运行。
    EstimateExecutions 该运算符预计在当前查询运行期间将执行的次数。

    权限
    SET SHOWPLAN_ALL 权限默认授予所有用户。
    示例
    下面两个语句使用 SET SHOWPLAN_ALL 设置,显示 SQL Server 在查询内对索引的使用进行分析和优化的方法。
    第一个查询在索引列上的 WHERE 子句中使用等于比较运算符 (=)。这在 LogicalOp 列内产生聚集索引查找值,在Argument 列内产生索引名。
    第二个查询在 WHERE 子句中使用 LIKE 运算符。这将强制 SQL Server 使用聚集索引扫描并查找满足 WHERE 子句条件的数据。这在含有 Argument 列内索引名的 LogicalOp 列内产生聚集索引扫描值,在含有 Argument 列内 WHERE 子句条件的LogicalOp 列内产生筛选值。
    EstimateRows 和 TotalSubtreeCost 列内用于第一个基于索引的查询的值较小,这表示与非索引查询相比,该查询的处理速度快得多且使用更少的资源。
    USE pubsGOSET SHOWPLAN_ALL ONGO-- First query.SELECT au_id FROM authors WHERE au_id = '409-56-7008'GO-- Second query.SELECT cityFROM authorsWHERE city LIKE 'San%'GOSET SHOWPLAN_ALL OFFGO

    引用自 http://blog.csdn.net/miyatang/article/details/8115503

  • 相关阅读:
    精彩源于起点——2018年潍坊市首次青少年Python编程公开课
    第一款Micropython图形化编辑器—Python Editor
    [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵
    Android-Notification通知Demo
    Android-Handler更新View加线程
    Android-Handler更新View
    Android-Service开发步骤
    Android-高级UI控件_TabHost标签组件
    Android-高级UI控件_SeekBar拖动条
    Android-高级UI控件_ProgressDialog进度条对话框
  • 原文地址:https://www.cnblogs.com/guoguochong/p/7651860.html
Copyright © 2011-2022 走看看