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

SQL SERVER 执行计划各字段注释的更多相关文章

  1. SQL Server 执行计划缓存

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/内存池/缓冲区 概述 了解执行计划对数据库性能分析很重要,其中涉及到了语句性能分析与存储,这也是写这篇文章的目的,在了解执行计划之 ...

  2. SQL Server 执行计划中的扫描方式举例说明

    SQL Server 执行计划中的扫描方式举例说明 原文地址:http://www.cnblogs.com/zihunqingxin/p/3201155.html 1.执行计划使用方式 选中需要执行的 ...

  3. 引用:初探Sql Server 执行计划及Sql查询优化

    原文:引用:初探Sql Server 执行计划及Sql查询优化 初探Sql Server 执行计划及Sql查询优化 收藏 MSSQL优化之————探索MSSQL执行计划 作者:no_mIss 最近总想 ...

  4. sql server 执行计划(execution plan)介绍

    大纲:目的介绍sql server 中执行计划的大致使用,当遇到查询性能瓶颈时,可以发挥用处,而且带有比较详细的学习文档和计划,阅读者可以按照我计划进行,从而达到对执行计划一个比较系统的学习. 什么是 ...

  5. SQL Server执行计划那些事儿(3)——书签查找

    接下来的文章是记录自己曾经的盲点,同时也透漏了自己的发展历程(可能发展也算不上,只能说是瞎混).当然,一些盲点也在工作和探究过程中慢慢有些眉目,现在也愿意发扬博客园的奉献精神,拿出来和大家分享一下. ...

  6. SQL Server执行计划那些事儿(2)——查找和扫描

    接下来的文章是记录自己曾经的盲点,同时也透漏了自己的发展历程(可能发展也算不上,只能说是瞎混).当然,一些盲点也在工作和探究过程中慢慢有些眉目,现在也愿意发扬博客园的奉献精神,拿出来和大家分享一下. ...

  7. SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)

    接上文:SQL Server 执行计划操作符详解(2)--串联(Concatenation ) 前言: 前面两篇文章介绍了关于串联(Concatenation)和断言(Assert)操作符,本文介绍第 ...

  8. SQL Server 执行计划操作符详解(2)——串联(Concatenation )

    本文接上文:SQL Server 执行计划操作符详解(1)--断言(Assert) 前言: 根据计划,本文开始讲述另外一个操作符串联(Concatenation),读者可以根据这个词(中英文均可)先幻 ...

  9. 浅析SQL SERVER执行计划中的各类怪相

    在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的 ...

随机推荐

  1. Lightoj 1027 - A Dangerous Maze 【期望】

    1027 - A Dangerous Maze PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Y ...

  2. Tcl脚本调用高层API实现仪表使用和主机创建配置的自己主动化測试用例

    #设置Chassis的基本參数,包含IP地址.port的数量等等 set chassisAddr 10.132.238.190 set islot 1 set portList {11 12} ;#端 ...

  3. Servlet学习笔记(八)—— 文件下载

    一.文件下载概述 比如图片或者HTML这类静态资源,仅仅要在浏览器中打开正确的网址就行下载.仅仅要资源放在应用程序文件夹或者其下的子文件夹中,但不在WEB-INF下.Servlet/JSP容器就会将资 ...

  4. java创建线程的三种方式及其对照

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类.并重写该类的run方法,该run方法的方法体就代表了线程要完毕的任务.因此把run()方法称为运行 ...

  5. SUSE Linux源代码编译安装MySQL 5.6

    这篇文章主要介绍了SUSE Linux下源代码编译方式安装MySQL 5.6过程分享,本文使用SUSE Linux Enterprise Server 10 SP3 (x86_64)系统,须要的朋友能 ...

  6. HDU 1505 City Game(DP)

    City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. Python: PS 滤镜--万花筒效果

    本文用 Python 实现 PS 的一种滤镜效果,称为万花筒.也是对图像做各种扭曲变换,最后图像呈现的效果就像从万花筒中看到的一样: 图像的效果可以参考之前的博客: http://blog.csdn. ...

  8. 【JSOI 2008】 最小生成树计数

    [题目链接] 点击打开链接 [算法] 笔者做这题参考了这篇博客 : https://blog.sengxian.com/solutions/bzoj-1016 推荐阅读 首先,我们需要知道三个定理 : ...

  9. bzoj1854 [Scoi2010]游戏——匈牙利算法

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1854 这题...据说可以用并查集做,但没有去看... 用二分图匹配的话,就把装备和它的两个属 ...

  10. C#直接删除指定目录下的所有文件及文件夹(保留目录)

    #region 直接删除指定目录下的所有文件及文件夹(保留目录) /// <summary> /// 直接删除指定目录下的所有文件及文件夹(保留目录) /// </summary&g ...