2011-07-07 48 views

回答

6

這是嚴格的SQL Server內部操作。

作爲一個數據庫被這種行爲改變添加索引或更改索引列中的數據,用來訪問它的表的原始查詢計劃應再次通過重新編譯他們

優化這裏的MSDN's article on Recompiling Stored Procedures

當您發出ALTER PROC語句時,也會導致存儲過程的重新編譯。

+1

Downvoter對我的答案如何不能爲問題提供好處和價值有任何解釋嗎? –

2

使用重新編譯使得SQL Server重新編譯爲SP,因此數據庫引擎不會爲同一個SP使用現有計劃,而會創建新的執行計劃。

根據您的要求,它既可以是自動化的也可以是手動的。通過在SP中包含RECOMPILE「提示」,您可以在每次執行SP時重新編譯SP。或運行

Exec的sp_recompile N'yourSP」

手動重新編譯。

而@Michael提到,太多的重新編譯可能會非常糟糕,因爲每個編譯數據庫引擎都必須創建新的執行計劃,這可能會導致代價高昂的操作。因此,一般應避免自動重新編譯SP,甚至在開發環境中首先要測試手動重新編譯,然後才能使用它來確保它確實有幫助。

相關問題