2010-11-13 49 views
1

所花費的時間,我有以下選項如何準確測量由存儲過程/函數

  1. 使用「包括客戶端統計」中SSMS選項。 (我將'等待服務器響應時間'作爲存儲過程所花費的時間)
  2. 捕獲開始和結束時間並採取差異。

這是我做的,

DECLARE @startTime DATETIME 
    SET @startTime = GETUTCDATE() 

    EXEC MyStoredProc 

    PRINT 'Execution Time : ' + CAST(DATEDIFF(ms,@startTime,GETUTCDATE()) AS NVARCHAR(20)) + ' milliseconds' 

但我有時會看到值我來自於同一個存儲過程的方法得到,我開始覺得我做的一個很大的區別這裏出了點問題。我應該使用哪種方法?還是有更好的方法來定時存儲過程?

回答

5

確保您運行以下命令以獲得良好的基線每次:

CHECKPOINT 
GO 
DBCC DROPCLEANBUFFERS 
GO 
DBCC FREEPROCCACHE 
GO 

Stolen from here.

否則你可能會拉動高速緩存的數據。

+0

+1。感謝您指出了這一點。但是我真正想知道的是'我提到的兩個方法中哪一個最準確'(假設我已經按照您的建議清理了緩存) – Sadhir 2010-11-15 17:49:18

+0

我不確定,我會使用' SET STATISTICS TIME ON「而不是這些方法。我猜客戶的統計數據比較好,但我不確定。 – 2010-11-15 23:33:05