亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

動態SQL-EXEC(@SQL)與EXEC SP_EXECUTESQL(@SQL)

動態SQL-EXEC(@SQL)與EXEC SP_EXECUTESQL(@SQL)

牛魔王的故事 2019-10-29 14:32:11
使用以下方法在SQL Server的存儲過程中執行動態SQL命令的實際利弊是什么?EXEC (@SQL)與EXEC SP_EXECUTESQL @SQL?
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

sp_executesql更有可能促進查詢計劃的重用。使用時sp_executesql,將在調用簽名中顯式標識參數。這篇優秀的文章描述了這一過程。


關于動態SQL的許多方面,經常引用的參考資料是Erland Sommarskog的必讀內容:“ 動態SQL的詛咒和祝福 ”。


查看完整回答
反對 回復 2019-10-29
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

Microsoft的《使用sp_executesql》文章建議使用sp_executesql代替execute語句。


因為此存儲過程支持參數替換,所以sp_executesql比EXECUTE具有更多的功能;并且由于sp_executesql生成的執行計劃更有可能被SQL Server重用,因此sp_executesql 比EXECUTE 更有效。


所以,帶走:不要使用executestatement。使用sp_executesql。


查看完整回答
反對 回復 2019-10-29
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

這些天我總是會使用sp_executesql,實際上它只是EXEC的包裝程序,用于處理參數和變量。

但是,當在非常大的數據庫上優化查詢時,不要忘記OPTION RECOMPILE,尤其是當您的數據跨多個數據庫并且使用CONSTRAINT限制索引掃描時。

除非您使用OPTION RECOMPILE,否則SQL Server將嘗試為查詢創建“一刀切”的執行計劃,并將在每次運行時運行全索引掃描。

這比查找效率低得多,這意味著它可能正在掃描整個索引,這些索引被限制在甚至不查詢的范圍內:@


查看完整回答
反對 回復 2019-10-29
  • 3 回答
  • 0 關注
  • 1461 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號