如何准确测量存储过程/函数所用的时间

Sad*_*hir 1 sql t-sql sql-server

我有以下选择

  1. 使用SSMS中的"包含客户端统计信息"选项.(我将'服务器回复的等待时间'作为存储过程所花费的时间)
  2. 捕获开始和结束时间并采取差异.

这就是我做的,

DECLARE @startTime DATETIME
    SET @startTime = GETUTCDATE()

   EXEC MyStoredProc

  PRINT 'Execution Time : ' +  CAST(DATEDIFF(ms,@startTime,GETUTCDATE()) AS NVARCHAR(20)) + ' milliseconds'
Run Code Online (Sandbox Code Playgroud)

但是我有时看到我从同一存储过程的两个方法得到的值之间存在很大差异,我开始认为我在这里做错了.我应该使用哪种方法?或者有更好的方法来计算存储过程的时间吗?

Abe*_*ler 5

确保每次运行以下内容以获得良好的基线:

CHECKPOINT
GO
DBCC DROPCLEANBUFFERS
GO
DBCC FREEPROCCACHE
GO
Run Code Online (Sandbox Code Playgroud)

从这里偷来了.

否则,您可能会提取缓存数据.