2

我有一些未优化的程序。我想分析这些程序是否得到优化,因为只有没有批量数据要检查。

我想将一个 sql 查询放入将插入到一个表中的所有过程中,该表执行上述查询所花费的确切时间。我将创建一个表,我的过程将在其中插入查询执行时间。

有什么办法可以做到这一点。

4

4 回答 4

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)
于 2012-07-11T12:43:37.273 回答
1

您是否尝试使用SQL Profiler

在跟踪属性中,您可以定义Start TimeEnd time存储过程。这是一个非常强大的工具。

于 2012-07-11T12:38:25.840 回答
0

您可以使用动态管理视图检查上述内容....

如果您使用的是旧版本的 SQL SERVER,请使用 SQL Server Profiler....

于 2012-07-11T12:37:52.153 回答
-1

你为什么要这样做?有很多工具,如 DMV、trace、exevents 等。如果你放那种代码,你会增加你的 proc 开销。对于程序,最好使用 dm_procedure_stats DMV,但仅在 2008 R2 及更高版本中可用。对旧版本使用 dm_exec_query_stats。这些将为您提供有关时间、逻辑 io、cputime 和物理 IO 等的更好的统计信息。

于 2012-07-14T13:51:52.707 回答