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. 详解cisco访问控制列表ACL

    一:访问控制列表概述   ·访问控制列表(ACL)是应用在路由器接口的指令列表.这些指令列表用来告诉路由器哪些数据包可以通过,哪些数据包需要拒绝.   ·工作原理:它读取第三及第四层包头中的信息,如源 ...

  2. HDU 4983 Goffi and GCD(数论)

    HDU 4983 Goffi and GCD 思路:数论题.假设k为2和n为1.那么仅仅可能1种.其它的k > 2就是0种,那么事实上仅仅要考虑k = 1的情况了.k = 1的时候,枚举n的因子 ...

  3. DOM 事件类

    DOM事件的级别: DOM级别一共可以分4个级别:DOM0级.DOM1级. DOM2级 .DOM3级.而DOM事件级别分为3个级别:DOM0级事件处理.DOM2级事件处理.DOM3级事件处理 1. D ...

  4. Java对话框总结

    总结起来非常easy: 1,对话框类型:消息.确认,选项.输入 2,选择图标:错误,信息.警告.问题,无或者自己定义 3,选择消息:字符串,图标.自己定义组件或者他们的集合 4.对于确认对话框,选择选 ...

  5. 用Swift语言和Sprite Kit复制微信飞机大战游戏

    先上GitHub链接: https://github.com/songrotek/PlaneWar.git 接下来略微解说一下! 这个程序还有点Bug,见谅! 1 说明 游戏採用了Sprite kit ...

  6. a non-linear editing software

    VLMC, open source video editor - VideoLAN http://www.videolan.org/vlmc/

  7. 怎样处理Gradle中的这个文件下载慢的问题的

    如图:在build.gradle中的dependencies中加上要依赖的包后,就点击sync gradle.然后就开始了下载.在此过程中我是FQ了的(在此同时我是可以用chrome进入https:/ ...

  8. Massive Data Mining学习记录

    第一周: 学习PageRank, 知识点:每个节点的权值由其他节点的投票决定,所有节点的权值和为1 当节点很多时候必须转换成矩阵运算来计算节点的最终值,由马尔可夫链可以证明,这个值可以迭代得到 问题: ...

  9. luogu 1080 国王游戏

    题目大意: 有一些数对,每个数对的得分为它之前所有数对的左侧数之乘积除以它的右侧数 求重新排列后数列中所有数对中最大得分尽可能小(第一个数对不参与排序,仍然为第一个) 思路: 非常简单,可以根据它对后 ...

  10. JSSDK使用步骤

    绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 引入js文件 在需要调用JS接口的页面引入如下JS文件,( ...