SQL 执行时间统计与性能检测
平常用来测试我们的 SQL 脚本的时候,执行时间是很重要的。我们通过下面两种方式来检查我们的 SQL 的性能,推荐第二种。
一、使用 SET STATISTICS 选项
SET STATISTICS PROFILE ON
SELECT *
FROM [学生成绩管理系统].[dbo].[Score] as s
join dbo.Student as st
on s.studentNumber = st.number
GOCode language: JavaScript (javascript)
写程序的人,往往需要分析所写的 SQL 语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到 SQL 的 STATISTICS 状态值来查看了。
通过设置 STATISTICS 我们可以查看执行 SQL 时的系统情况。选项有 PROFILE、IO、TIME,介绍如下:
- SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
- SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
- SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。
使用方法:打开 SQL Server 查询分析器,输入以下语句:
SET STATISTICS PROFILE ON
SET STATISTICS IO ON
SET STATISTICS TIME ON
GO
/*--你的SQL脚本开始*/
SELECT [TestCase] FROM [TestCaseSelect]
GO
/*--你的SQL脚本结束*/
SET STATISTICS PROFILE OFF
SET STATISTICS IO OFF
SET STATISTICS TIME OFFCode language: CSS (css)
二、自定义时间变量统计
自己写脚本来统计执行的毫秒数,其实这个脚本就是定义两个时间变量,然后再执行前保存时间,执行后保存时间,然后计算时间差。
declare @begin_date datetime
declare @end_date datetime
select @begin_date = getdate()
--要执行的SQL语句
SELECT top 10 s.number,s.studentnumber,s.examnumber,s.coursenumber,s.score
FROM [学生成绩管理系统].[dbo].[Score] s
order by score desc
--END
select @end_date = getdate()
select datediff(ms,@begin_date,@end_date) as '用时/毫秒' ,
datediff(mcs,@begin_date,@end_date) as '微秒',
datediff(ns,@begin_date,@end_date) as '纳秒'Code language: PHP (php)