您好,欢迎访问一九零五行业门户网

查看sql语句执行时间

资料来自于:http://technet.microsoft.com/zh-cn/library/ms187735(sql.90).aspx set showplan_all (transact-sql) 使 microsoft sql server 不 执行 transact-sql 语句 。sql server 返回有关 语句 执行 情况的详细信息,并估计 语句 对资源的需求。 语法
资料来自于:http://technet.microsoft.com/zh-cn/library/ms187735(sql.90).aspx
set showplan_all (transact-sql)
使 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 win32 命令提示符应用程序(如 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:() 和一组列表。此警告信息表示查询优化器曾尝试根据此列的统计信息做出决策,但没有找到可用的统计信息。因此,查询优化器不得不进行推测,这可能已导致选择了低效的查询计划。有关创建或更新列统计信息(这些统计信息有助于查询优化器选择更有效的查询计划)的详细信息,请参阅更新统计信息。此列可能选择包含字符串 missing join predicate,表示正在进行的联接(与表有关)未使用联接谓词。意外丢失联接谓词可能导致查询的运行时间比预期长得多,并返回一个巨大的结果集。如果出现此警告,请验证是否有意不使用联接谓词。
type
节点类型。对于每个查询的父节点,这是 transact-sql 语句类型(如 select、insert、execute 等)。对于表示执行计划的子节点,这是 plan_row 类型。
parallel
0 = 运算符没有以并行方式运行。
1 = 运算符正在以并行方式运行。
estimateexecutions
当前查询运行期间,预计将执行此运算符的次数。
示例
以下两个语句使用了 set showplan_all 设置,用于显示 sql server 在查询中分析和优化索引的方式。
第一个查询在索引列上的 where 子句中使用等于比较运算符 (=)。从而在 logicalop 列内得到 clustered index seek 值,在 argument 列内产生索引名。
第二个查询在 where 子句中使用 like 运算符。这将强制 sql server 使用聚集索引扫描并查找满足 where 子句条件的数据。从而在 logicalop 列内得到 clustered index scan 值,在 argument 列内生成索引名;在 logicalop 列内产生 filter 值,在 argument 列内出现 where 子句条件。
第一个索引查询的 estimaterows 和 totalsubtreecost 属性中的值较小,这表示与非索引查询相比,该查询的处理速度快得多且使用的资源更少。
use adventureworks;goset showplan_all on;go-- first query.select employeeid from humanresources.employeewhere nationalidnumber = '509647174';go-- second query.select employeeid, emergencycontactid from humanresources.employeewhere emergencycontactid like '1%';goset showplan_all off;go
set statistics io (transact-sql)
使 sql server 显示有关由 transact-sql 语句生成的磁盘活动量的信息。
语法
set statistics io { on | off }
备注
如果 statistics io 为 on,则显示统计信息。如果为 off,则不显示统计信息。
如果将此选项设置为 on,则所有后续的 transact-sql 语句将返回统计信息,直到将该选项设置为 off 为止。
下表列出并说明了各个输出项。
输出项 含义
table
表的名称。
scan count
执行的扫描次数。
logical reads
从数据缓存读取的页数。
physical reads
从磁盘读取的页数。
read-ahead reads
为进行查询而放入缓存的页数。
lob logical reads
从数据缓存读取的 text、ntext、image 或大值类型 (varchar(max)、nvarchar(max)、varbinary(max)) 页的数目。
lob physical reads
从磁盘读取的 text、ntext、image 或大值类型页的数目。
lob read-ahead reads
为进行查询而放入缓存的 text、ntext、image 或大值类型页的数目。
set statistics io 是在执行或运行时设置,而不是在分析时设置。
注意:
当 transact-sql 语句检索 lob 列时,有些 lob 检索操作可能需要多次遍历 lob 树。这可能会导致 set statistics io 报告的次数比预期的逻辑读取次数更高。
示例
以下示例显示 sql server 处理语句时,进行了多少次逻辑读和物理读操作。
use adventureworks;go set statistics io on;goselect * from production.productcosthistorywhere standardcost
下面是结果集:
table 'productcosthistory'. scan count 1, logical reads 5, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
set statistics profile (transact-sql)
显示语句的配置文件信息。statistics profile 对即席查询、视图和存储过程有效。
语法
set statistics profile { on | off }
备注
statistics profile 为 on 时,执行的各个查询都返回其常规结果集,后面跟一个附加结果集,显示查询执行的配置文件。
      附加结果集包含查询的 showplan_all 列以及下面的附加列。
列名 说明
rows
各运算符生成的实际行数
executes
运算符执行的次数
set statistics time (transact-sql)
显示分析、编译和执行各语句所需的毫秒数。
语法
set statistics time { on | off }
备注
当 set statistics time 为 on 时,会显示语句的时间统计信息。为 off 时,不显示时间统计信息。
set statistics time 的设置是在执行或运行时设置,而不是在分析时设置。
microsoft sql server 不能在纤程模式下提供准确的统计信息,而纤程模式在启用“轻型池” 配置选项时激活。
只有当使用 set statistics time on 执行查询时才更新 sysprocesses 表中的 cpu 列。当 set statistics time 为 off 时,将返回 0。
on 和 off 设置还影响 sql server management studio 内的“当前活动的进程信息视图”中的 cpu 列。
示例
下面的示例显示服务器的执行、分析和编译时间。
use adventureworks;go set statistics time ongoselect * from production.productcosthistorywhere standardcost
下面是结果集:
sql server parse and compile time: cpu time = 0 ms, elapsed time = 1 ms.sql server parse and compile time: cpu time = 0 ms, elapsed time = 1 ms.(269 row(s) affected)sql server execution times: cpu time = 0 ms, elapsed time = 2 ms.sql server parse and compile time: cpu time = 0 ms, elapsed time = 1 ms.
其它类似信息

推荐信息