阅文时长 | 0.23分钟 字数统计 | 420.8字符
主要内容 | 1、引言&背景 2、自定义时间变量求差法 3、MSSQL内置方法 4、MSSQL选项开启时间统计 5、声明与参考资料
『MSSQL·查询T-SQL语句执行时间的三种方法』
编写人 | SCscHero 编写时间 | 2021/5/22 AM12:30
文章类型 | 系列 完成度 | 已完成
座右铭 每一个伟大的事业,都有一个微不足道的开始。

一、引言&背景   完成度:100%

a) 应对问题

  1. 如何统计T-SQL语句的执行时间?
  2. 统计T-SQL语句的执行时间有哪几种方法?
  3. 统计T-SQL语句的执行时间的几种方法有哪些优缺点?

b) 应用场景

  1. 需要统计T-SQL、存储过程、视图、函数等执行时间的场景。
  2. DB性能调优,对比不同的方式执行时间。

c) 解决原理&方法

  1. 自定义时间变量求差法。
  2. MSSQL内置统计信息选项。
  3. 默认开启时间统计信息。

二、自定义时间变量求差法   完成度:100%

实现方式如下。

DECLARE @VarDatetime DATETIME
SET @VarDatetime=GETDATE()
/*此处写入需要查询执行时长的语句*/
SELECT [语句执行花费时间(毫秒)]=DATEDIFF(MS,@VarDatetime,GETDATE())

【TIPS】此种方法的执行时间相比MSSQL内置统计时间略长,有一种说法是跟调用了聚合函数有关。

三、MSSQL内置方法   完成度:100%

a) 语法简介

SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。

b) 示例Demo

SET STATISTICS TIME ON
SET STATISTICS IO ON
SET STATISTICS PROFILE ON
GO
/*此处写入需要查询执行时长的语句*/ 
GO
SET STATISTICS PROFILE OFF
SET STATISTICS TIME OFF
SET STATISTICS IO OFF

c) 可获取信息

此种数据统计方法,可从消息中查看CPU时间和总时间。并可获得扫描计数、逻辑读取、物理读取、预读次数、逻辑读取、物理读取、lob预读等信息。可从结果集中,获取IO执行时间和CPU执行时间。

d) 数据深度分析

占用时间:当前这一步的总时间。如果占用时间比CPU时间大很多,那开销主要用于IO上。
逻辑读取次数:从数据缓存读取的页数。数字越小,性能越好。在性能调优中这个数字非常重要。因为它不会随着执行又执行而改变,除非数据或查询语句有变动。在进行性能调优时,这个可以作为性能提升的重要参考。
物理读取次数:从磁盘读取的页数。这个会随着执行又执行而改变。大多数情况下,连续第2次的执行时,它的物理读取值为0(因为会加载到内存中去)。

----来自《sqlserver 查看脚本执行时间》

四、MSSQL选项开启时间统计   完成度:100%

工具->选项->查询执行->高级,如下图所示:


----来自《SQLServer 查看SQL语句的执行时间》

五、声明与参考资料   完成度:100%

SQLServer 查看SQL语句的执行时间
sqlserver 查看脚本执行时间

原创博文,未经许可请勿转载。

如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/SCscHero/p/14797902.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!