我有一個存儲過程,我試圖優化。爲了知道多少時間花在了我在腳本的開頭添加了一個執行:DROPCLEANBUFFERS在SQL Server中不起作用
use MyDatabase
go
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
之間兩個執行我可以看到運行查詢減少時間。我認爲只有緩存可以加快腳本的執行速度,SQL Server中是否還有其他機制來實現這個訣竅?
感謝,
我有一個存儲過程,我試圖優化。爲了知道多少時間花在了我在腳本的開頭添加了一個執行:DROPCLEANBUFFERS在SQL Server中不起作用
use MyDatabase
go
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
之間兩個執行我可以看到運行查詢減少時間。我認爲只有緩存可以加快腳本的執行速度,SQL Server中是否還有其他機制來實現這個訣竅?
感謝,
第一次運行一個存儲過程,查詢計劃的計算和編譯。這通常需要20ms,對於很長的程序可能會多一點。
如果您在checkpoint; dbcc dropcleanbuffers;
之前運行一次查詢,那麼該計劃應該被緩存。
也許您在尋找['DBCC FREEPROCCACHE'](http://msdn.microsoft.com/zh-cn/library/ms174283.aspx)? – swasheck
您還應該看看如何使用查詢執行計劃來了解如何優化查詢,而不是在每次進行更改時都會將緩存放出。 – swasheck
thx swasheck。我的問題更多的是關於SQL Server的內部。爲了解釋爲什麼每次我使用它時,沒有緩存的完全相同的查詢可能會更快。 – Arthis