2012-06-27 48 views
1

我有一個存儲過程,我試圖優化。爲了知道多少時間花在了我在腳本的開頭添加了一個執行:DROPCLEANBUFFERS在SQL Server中不起作用

use MyDatabase 
go 
CHECKPOINT; 
GO 
DBCC DROPCLEANBUFFERS; 
GO 

之間兩個執行我可以看到運行查詢減少時間。我認爲只有緩存可以加快腳本的執行速度,SQL Server中是否還有其他機制來實現這個訣竅?

感謝,

+1

也許您在尋找['DBCC FREEPROCCACHE'](http://msdn.microsoft.com/zh-cn/library/ms174283.aspx)? – swasheck

+2

您還應該看看如何使用查詢執行計劃來了解如何優化查詢,而不是在每次進行更改時都會將緩存放出。 – swasheck

+0

thx swasheck。我的問題更多的是關於SQL Server的內部。爲了解釋爲什麼每次我使用它時,沒有緩存的完全相同的查詢可能會更快。 – Arthis

回答

2

第一次運行一個存儲過程,查詢計劃的計算和編譯。這通常需要20ms,對於很長的程序可能會多一點。

如果您在checkpoint; dbcc dropcleanbuffers;之前運行一次查詢,那麼該計劃應該被緩存。

+0

你的意思是:因爲我運行了一次查詢。下一次我運行它時,不管我是否使用heckpoint; dbcc dropcleanbuffers ;,查詢計劃已經被計算和編譯,這樣sql server就不會再執行一次了? – Arthis

+0

沒有命令我可以運行重新計算和重新編譯我的整個查詢計劃每次? – Arthis

+0

@Arthis DBCC FREEPROCCACHE – swasheck

相關問題