MSSQL·查询T-SQL语句执行时间的三种方法
阅文时长 | | 0.23分钟 | 字数统计 | | 420.8字符 |
主要内容 | | 1、引言&背景 2、自定义时间变量求差法 3、mssql内置方法 4、mssql选项开启时间统计 5、声明与参考资料 | ||
『mssql·查询t-sql语句执行时间的三种方法』 | |||
编写人 | | scschero | 编写时间 | | 2021/5/22 am12:30 |
文章类型 | | 系列 | 完成度 | | 已完成 |
座右铭 | 每一个伟大的事业,都有一个微不足道的开始。 |
一、引言&背景 完成度:100%
a) 应对问题
- 如何统计t-sql语句的执行时间?
- 统计t-sql语句的执行时间有哪几种方法?
- 统计t-sql语句的执行时间的几种方法有哪些优缺点?
b) 应用场景
- 需要统计t-sql、存储过程、视图、函数等执行时间的场景。
- db性能调优,对比不同的方式执行时间。
c) 解决原理&方法
- 自定义时间变量求差法。
- mssql内置统计信息选项。
- 默认开启时间统计信息。
二、自定义时间变量求差法 完成度: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%
原创博文,未经许可请勿转载。
如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信scschero即可。
上一篇: MSSQL·将一对多的数据合并为以指定分隔符的数据
下一篇: 用python写截屏小工具