我遇到過有人想要創建動態表的代碼,運行選擇陳述句來填充該表,然后使用該表的資料運行一系列存盤程序。所有這些都是使用 .NET 代碼中的行內 SQL 完成的。
他們基本上做的是(偽代碼):
declare table;
insert IDs into table
exec storedprocedure table
exec storedprocedure table
exec storedprocedure table
exec storedprocedure table
在我看來,而且我沒有任何理由支持,這可能不如創建一個執行所有這些操作的存盤程序高效,而 .NET 代碼只是呼叫該封裝存盤程序。
這兩種方法是否有性能影響或收益?
uj5u.com熱心網友回復:
這兩種方法是否有性能影響或收益?
不正常。
唯一真正的區別(這不太重要)是發送到 SQL Server 的請求資料的大小,以及散列 TSQL 批處理以確定是否有快取計劃的成本。
一旦為 TSQL 批處理找到快取的計劃,執行就如同 RPC 請求呼叫了存盤程序一樣。
如果此批處理以非常高的頻率運行,另一個潛在問題是臨時表元資料不會被快取。因此,如果您以每秒 1000 次的速度運行并且只有一個 tempdb 檔案,則您可以在 TempDb 中獲得元資料頁鎖存器爭用。
這是很久以前有點重要的事情,但現在只在邊緣情況下才值得注意。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411241.html
標籤:
