我有一段動態的SQL。大約需要4分鐘。如果我改用SQL的輸出並運行它,則需要大約20秒。爲何差異?我知道在動態版本中構建SQL需要一定的時間,但我無法想象它的成本太高。動態SQL比硬編碼的等效時間長得多
任何人有任何想法?這兩個查詢應該是相同的,所以我懷疑查詢計劃緩存有點奇怪,但實際上並沒有太多想法。
編輯: 澄清我的意思是通過輸出。
在動態SQL中的最後一行是
EXEC sp_executesql @myQuery,
N'@var1 INT,
@var2 INT,
@var2 INT',
@var1,
@var2,
@var3
我把更改爲MyQuery的價值,並把它放在自己的SQL文件。運行時間爲20秒,而使用execute的動態運行需要4分鐘。
編輯2 我刪除了參數。我得到了有趣的結果。動態SQL語句看到了性能改進。硬編碼版本遭遇了巨大的性能影響。現在兩人差不多。
請張貼您的代碼。 – Taryn 2013-03-15 19:04:39
你可以顯示你的代碼嗎? – 2013-03-15 19:05:53
您應該添加更多信息,但如果硬編碼速度更快,那麼您肯定是在做錯事。 – TFennis 2013-03-15 19:06:51