SQL测量存储过程的执行时间

时间:2013-12-20 09:55:28

标签: sql sql-server stored-procedures

我想测量在SQL Server中执行存储过程所需的时间。但是,我还想测量存储过程中每个操作所花费的时间,而不仅仅是测量整个存储过程的执行时间,因此我可以找到瓶颈。

在c#中为了在测试代码执行时间时完成这样的事情,我会在执行开始之前保存日期,当执行结束时,我会打印通过从当前时间减去开始时间给出的TimeSpan对象(执行后) )。

我想知道如何在存储过程中使用SQL Server实现这样的功能,在那里我可以打印我在存储过程中的操作之间测量的时间跨度。

谢谢

3 个答案:

答案 0 :(得分:3)

SET STATISTICS TIME ON;
SET STATISTICS IO ON;
GO

EXECUTE <yourSP>;

GO

答案 1 :(得分:0)

您需要actual execution plan。您可以通过按下右键在SQL Management Studio中运行SQL查询来查看这些内容(它们将在结果窗口中显示为选项卡)。这将显示正在运行的sproc的哪些部分以及每个位占用的时间 - 正是您想要调整的内容。

答案 2 :(得分:0)

对我有用的是这里的建议: https://www.codeproject.com/tips/1151457/a-simple-method-to-measure-execution-time-in-sql-s

Declare @StartTime DateTime2

SET @StartTime = SysUTCDateTime()

-- SQL Execution

Print 'Time taken was ' + cast(DateDiff(millisecond, @StartTime, SysUTCDateTime()) as varchar) + 'ms'

SET @StartTime = SysUTCDateTime()

-- Second SQL Execution

Print 'Time taken was ' + cast(DateDiff(millisecond, @StartTime, SysUTCDateTime()) as varchar) + 'ms'