3 回答

TA貢獻(xiàn)1821條經(jīng)驗 獲得超5個贊
sp_executesql更有可能促進(jìn)查詢計劃的重用。使用時sp_executesql,將在調(diào)用簽名中顯式標(biāo)識參數(shù)。這篇優(yōu)秀的文章描述了這一過程。
關(guān)于動態(tài)SQL的許多方面,經(jīng)常引用的參考資料是Erland Sommarskog的必讀內(nèi)容:“ 動態(tài)SQL的詛咒和祝福 ”。

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

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