我有一些未优化的程序。我想分析这些程序是否得到优化,因为只有没有批量数据要检查。
我想将一个 sql 查询放入将插入到一个表中的所有过程中,该表执行上述查询所花费的确切时间。我将创建一个表,我的过程将在其中插入查询执行时间。
有什么办法可以做到这一点。
我有一些未优化的程序。我想分析这些程序是否得到优化,因为只有没有批量数据要检查。
我想将一个 sql 查询放入将插入到一个表中的所有过程中,该表执行上述查询所花费的确切时间。我将创建一个表,我的过程将在其中插入查询执行时间。
有什么办法可以做到这一点。
如果要将其集成到过程中,请设置一个变量,该变量在开始时存储执行开始时间,并在过程结束时将其与当前时间相减。
/* 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)
您是否尝试使用SQL Profiler?
在跟踪属性中,您可以定义Start Time
和End time
存储过程。这是一个非常强大的工具。
您可以使用动态管理视图检查上述内容....
如果您使用的是旧版本的 SQL SERVER,请使用 SQL Server Profiler....
你为什么要这样做?有很多工具,如 DMV、trace、exevents 等。如果你放那种代码,你会增加你的 proc 开销。对于程序,最好使用 dm_procedure_stats DMV,但仅在 2008 R2 及更高版本中可用。对旧版本使用 dm_exec_query_stats。这些将为您提供有关时间、逻辑 io、cputime 和物理 IO 等的更好的统计信息。