我有一些未优化的程序。我想分析这些程序是否得到优化,因为只有大量数据不能检查。
我想将sql查询放入所有过程中,该过程将插入一个表中,执行上述查询所需的时间是多少。我将创建一个表,我的过程将在其中插入查询执行时间。
有什么方法可以做到这一点。
答案 0 :(得分:3)
如果要将其集成到过程中,请设置一个变量,该变量在开始时存储执行开始时间,并在过程结束时用当前时间减去它。
/* Start of your procedure */
Declare @startTime datetime = GETDATE()
Declare @duration varchar
/* Your procedure */
...
/* End of your procedure */
Set @duration = CONVERT(VARCHAR(8),GETDATE() - @startTime,108)
Insert into statisticTable
Values ('procedureName', @duration)
答案 1 :(得分:1)
您是否尝试使用 SQL Profiler ?
在跟踪属性中,您可以定义存储过程的Start Time
和End time
。这是一个非常强大的工具。
答案 2 :(得分:0)
您可以使用Dynamic Management Views ....
查看上述内容如果您使用的是旧版本的SQL SERVER,请使用SQL Server Profiler ....
答案 3 :(得分:-1)
为什么要这样做?有很多工具,比如DMV,trace,exevents等。如果你放了那种代码,你会增加你的proc的开销。对于程序,最好的是dm_procedure_stats DMV,但仅适用于2008 R2及更高版本。使用旧版本的dm_exec_query_stats。这些将为您提供有关时间,逻辑io,cputime和物理IO等的更好的统计信息。