3 回答

TA貢獻1821條經驗 獲得超5個贊
sp_executesql更有可能促進查詢計劃的重用。使用時sp_executesql,將在調用簽名中顯式標識參數。這篇優秀的文章描述了這一過程。
關于動態SQL的許多方面,經常引用的參考資料是Erland Sommarskog的必讀內容:“ 動態SQL的詛咒和祝福 ”。

TA貢獻1757條經驗 獲得超8個贊
Microsoft的《使用sp_executesql》文章建議使用sp_executesql代替execute語句。
因為此存儲過程支持參數替換,所以sp_executesql比EXECUTE具有更多的功能;并且由于sp_executesql生成的執行計劃更有可能被SQL Server重用,因此sp_executesql 比EXECUTE 更有效。
所以,帶走:不要使用executestatement。使用sp_executesql。

TA貢獻1851條經驗 獲得超5個贊
這些天我總是會使用sp_executesql,實際上它只是EXEC的包裝程序,用于處理參數和變量。
但是,當在非常大的數據庫上優化查詢時,不要忘記OPTION RECOMPILE,尤其是當您的數據跨多個數據庫并且使用CONSTRAINT限制索引掃描時。
除非您使用OPTION RECOMPILE,否則SQL Server將嘗試為查詢創建“一刀切”的執行計劃,并將在每次運行時運行全索引掃描。
這比查找效率低得多,這意味著它可能正在掃描整個索引,這些索引被限制在甚至不查詢的范圍內:@
- 3 回答
- 0 關注
- 1461 瀏覽
添加回答
舉報