以下语句可以进行SQL 语句执行时间分析,两个Go之间就是SQL查询语句

  1. use Work--数据库名
  2. go
  3. set statistics profile on
  4. set statistics io on
  5. set statistics time on
  6. go
  7. -----(SQL执行语句)
  8. go
  9. set statistics profile off
  10. set statistics io off
  11. set statistics time off
  12. go

运行一次后就可以在查询结果的信息标签下看到统计信息

SQL Server 的查询过程为根据SQL表中的统计信息分析执行计划,然后才是编译,最后执行。

其中一共用到了三条Statistics相关语句

一、statistics time选项

用于显示分析、编译和执行各语句所需的毫秒数。

1、CPU时间和占用时间:

(1)CPU时间是指该句CPU占用的时间,即语句占用了多少CPU资源。在多个CPU的系统中,这个CPU时间是所有CPU上时间的总和。与profiler工具和服务器跟踪选项所提供的CPU值一致

(2)占用时间是指该语句总共用的时间,包括可能存在的I/O等待时间等。这个与Profiler中的Duration值一致

通常数据需要从磁盘中读取,还可能遇到I/O阻塞,因此大部分情况下看到的是占用时间大于CPU时间,这个很容易理解,但有时候CPU时间是可能大于占用时间的,这是由于该句使用了多个CPU,但是等待时间又很短

           

那么个SQL语句的CPU时间就是分析编译里的CPU时间加上执行时间里的CPU时间之和,整个语句的执行时间就是所有占用时间之和。通常编译主要就是CPU的运算,那么CPU时间和占用时间应该是比较接近的。如果在执行过程,就可能需要将数据从磁盘读入内存,那么I/O等待时间的消耗就可能造成占用时间很长。

2、在存在缓存的情况下,执行计划可以重用,因此分析编译时间可能都为零;执行过程中的数据也不需要从磁盘上读取,所以执行时间中的中占用时间很短,缓存使得性能大提高。

二、Statistics IO选项

用于SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。

1、“表 'ProductLite'。扫描计数 1,逻辑读取 3077 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。”这条结果中出现的概念在SQL Server帮助文档中都有解释

2、逻辑读取与Profiler中的Reads值是一个概念,但是由于profile日跟踪显示的Reads随着该查询使用的SET语句而增长,但是Statistics IO显示的逻辑读数量不包含SET语句所访问的附加页面,因此,Statistics IO提供的读操作数量一致。

3、当内存中还没有需要查找的数据时,需要从磁盘读取,因此物理读取和预读都不会为零;一旦经过一次查询后,该数值放入缓存,那么这两个值将保持为零。

三、Statistics profiler

显示语句的配置文件信息。STATISTICS PROFILE 对即席查询、视图和存储过程有效。

参数说明

Rows:执行计划的每一步返回的实际行数

Executes:执行计划的每一步被运行了多少次

StmtText:执行计划的具体内容。执行计划以一棵树的形式显示。每一行都是运行的一步,都会有结果集返回,也都会有自己的cost

EstimateRows:SQLSERVER根据表格上的统计信息,预估的每一步的返回行数。

EstimateIO:SQLSERVER根据EstimateRows和统计信息里记录的字段长度,预估的每一步会产生的I/O cost

EstimateCPU:SQLSERVR根据EstimateRows和统计信息里记录的字段长度,以及要做的事情的复杂度,预估每一步会产生的CPU cost

TotalSubtreeCost:SQLSERVER根据EstimateIO和EstimateCPU通过某种计算公式,计算出每一步执行计划子树的cost

Warnings:警告信息

Parallel:是否使用了并行的执行计划

SQL执行效率2-执行计划的更多相关文章

  1. Java开发学习(十七)----AOP案例之测量业务层接口执行效率

    一.需求分析 这个需求比较简单 需求:任意业务层接口执行均可显示其执行效率(执行时长) 这个的目的是查看每个业务层执行的时间,这样就可以监控出哪个业务比较耗时,将其查找出来方便优化. 具体实现的思路: ...

  2. 【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题

    记录通过执行Oracle的执行计划查询SQL脚本中的效率问题   问题现象: STARiBOSS5.8.1R2版本中,河北对帐JOB执行时,无法生成发票对帐文件.   首先,Quartz表达式培植的启 ...

  3. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  4. SQL执行效率和性能测试方法总结

    对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...

  5. 谈一谈SQL Server中的执行计划缓存(上)

    简介 我们平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径.当我们写的SQL语句传到SQL Server的时候,查询分析器会将语句依次进行解析(Parse).绑定(Bind).查询 ...

  6. SQL语句执行效率及分析(note)

    1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...

  7. [转]SQLServer SQL执行效率和性能测试方法总结

    本文转自:http://www.zhixing123.cn/net/27495.html 对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提 ...

  8. SQL执行效率和性能测试方法

    对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...

  9. in和exists的区别与SQL执行效率

    in和exists的区别与SQL执行效率最近很多论坛又开始讨论in和exists的区别与SQL执行效率的问题,本文特整理一些in和exists的区别与SQL执行效率分析 SQL中in可以分为三类: 1 ...

随机推荐

  1. Django~待解决的问题

    1.一个Model.py中简单调用多个数据库,不写数据库路由

  2. Easyui columns列图片移位问题!!!

    InitGrid: function () { $("#list").datagrid({ toolbar: '#tb', url: BanZhengXiaoLuSearch.Aj ...

  3. MFC 静态文本的自绘 空心字的实现

    想在对话框里,显示几个字是很简单的,只要用静态文本的输出就可以了.然而有时候我们需要显示特效的字,我们希望显示的文字就像Word里的艺术字一样,看起来美观.这时我们可以重写CStatic类.用Draw ...

  4. head标签详细讲解

    head标签详细讲解 head位于html网页的头部,后前的标签,并以开始以结束的一html标签. Head标签位置如图: head标签示意图 head包含标签 meta,title,link,bas ...

  5. HDU 5945 / BestCoder Round #89 1002 Fxx and game 单调队列优化DP

    Fxx and game 问题描述   青年理论计算机科学家Fxx给的学生设计了一款数字游戏. 一开始你将会得到一个数\:XX,每次游戏将给定两个参数\:k,tk,t, 任意时刻你可以对你的数执行下面 ...

  6. Win10商店东方财富网 UWP版更新,支持平板,PC,手机

    东方财富股份有限公司 近日向Win10商店提交了东方财富网V4.1版,这次为广大Win10平台用户带来了期待已久的桌面版本,可谓是良心厂商,值得鼓励和支持.4.1主要更新: 1. 支持桌面Window ...

  7. c语言结构体

    [C语言]21-结构体 本文目录 一.什么是结构体 二.结构体的定义 三.结构体变量的定义 四.结构体的注意点 五.结构体的初始化 六.结构体的使用 七.结构体数组 八.结构体作为函数参数 九.指向结 ...

  8. 通过 listboxitem 查找属于listbox第几条数据

    public override System.Windows.Style SelectStyle(object item, System.Windows.DependencyObject contai ...

  9. 【转】TCP协议

    TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6.TCP是一 ...

  10. Logback配置连接

    logback 简介 logback 常用配置详解(一)<configuration> and <logger> logback 常用配置详解(二)<appender&g ...