3 回答

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

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

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