2015-12-22 32 views
0

我有一個問題:比方說,我有一個程序包含過程定義內的動態SQL,所以當我第一次執行過程時,很明顯它編譯過程並存儲計劃第一次。SQL Server過程重新編譯

第二次運行過程中會發生什麼?將使用相同的計劃,還是程序將進行重新編譯,因爲它包含動態SQL?

回答

0

動態SQL始終被編譯。它可能導致與第一次運行相同的執行計劃(完全依賴於參數)。

我建議您讀一讀來自MS的this article。相關報價:

重新編譯:定義

查詢,批處理,存儲過程,觸發器,準備的發言之前,或動態SQL語句(以下簡稱,「批量」)開始執行一個SQL Server上,批被編譯成一個計劃。該計劃然後執行其效果或產生結果。

編譯計劃存儲到SQL Server的內存稱爲計劃緩存的一部分。計劃緩存被搜索可能的計劃重用機會。如果一個批次的計劃重用發生,它的編譯成本就可以避免。