我有一个存储过程和几个语句。以下是程序的执行时间统计:
SQL Server解析和编译时间:CPU时间= 0 ms,经过时间= 0毫秒SQL Server解析和编译时间:CPU时间= 0 ms,已过去 时间= 0毫秒。
SQL Server执行时间:CPU时间= 0毫秒,已用时间= 1毫秒。
(1行受影响)
SQL Server执行时间:CPU时间= 11484毫秒,已用时间= 2277毫秒。
(29行(s)受影响)
SQL Server执行时间:CPU时间= 0毫秒,已用时间= 1毫秒。
SQL Server执行时间:CPU时间= 0 ms,已用时间= 0 ms。
SQL Server执行时间:CPU时间= 0 ms,已用时间= 0 ms。
SQL Server执行时间:CPU时间= 0 ms,已用时间= 0 ms。
(1行受影响)
SQL Server执行时间:CPU时间= 0 ms,已用时间= 0 ms。
(1行受影响)
SQL Server执行时间:CPU时间= 0 ms,已用时间= 0 ms。
SQL Server执行时间:CPU时间= 11484毫秒,已用时间= 2283毫秒。
正如您所看到的总共4562毫秒。但是当我查看状态栏时,我发现需要2秒钟。我希望它应该是4秒。为什么这两个不同?
答案 0 :(得分:1)
2277 ms的第一次等待是程序中语句的执行时间。第二个2283毫秒是程序的完整持续时间。所以程序运行时间为2283毫秒而不是(2277 + 2283)毫秒
所以如果我像这样创建一个等待2秒的过程
CREATE PROCEDURE usp_delay AS BEGIN
WAITFOR DELAY '00:00:02'
END
GO
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
GO
EXEC usp_delay;
您可以看到统计信息io和时间如下:
SQL Server解析和编译时间: CPU时间= 0 ms,经过时间= 0 ms。
SQL Server解析和编译时间: CPU时间= 0 ms,经过时间= 9 ms。
SQL Server执行时间: CPU时间= 0 ms,经过时间= 2000 ms。
SQL Server执行时间: CPU时间= 0 ms,已用时间= 2010 ms。
请注意,对于语句WAITFOR DELAY
,它有2个经过时间> = 2000ms,对于完整的过程时间,它有一个。这也是你所看到的,并且程序在2010毫秒运行,而不是基于上述总和的4010毫秒。