执行时间统计与性能检测

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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注