我想测量在SQL Server中执行存储过程所需的时间。但是,我还想测量存储过程中每个操作所花费的时间,而不仅仅是测量整个存储过程的执行时间,因此我可以找到瓶颈。
在c#中为了在测试代码执行时间时完成这样的事情,我会在执行开始之前保存日期,当执行结束时,我会打印通过从当前时间减去开始时间给出的TimeSpan对象(执行后) )。
我想知道如何在存储过程中使用SQL Server实现这样的功能,在那里我可以打印我在存储过程中的操作之间测量的时间跨度。
谢谢
答案 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'