Sql-Server

在測試和生產環境之間看到 2 個非常不同的更新執行計劃

  • May 3, 2019

對於作為儲存過程一部分的 UPDATE 語句,我在 test/prod 之間看到了 2 個非常不同的查詢計劃。顯然表大小不同(大約 1000 萬行差異)。基本上區別在於 Prod 我看到一組昂貴的排序,然後是索引更新(nc 索引)

而在測試中,我根本沒有看到這些運算符集!只有聚集索引更新。我已經驗證了 NC 索引是否存在等等。我不知道發生了什麼?!我已經驗證了索引、sp、我已經嘗試過 RECOMPILE、參數的不同值等。我一定是缺少了一些東西,我什至檢查了約束,一切都匹配。

有什麼想法嗎?我以前從未見過這種情況。SQL 是否只是抓住了一個糟糕的執行計劃!?

UPDATE 的結構是這樣的:UPDATE

$$ tablename $$放$$ column $$=123 從… 下面的 Prod 計劃中的額外運算符(減去聚集索引更新): 在此處輸入圖像描述

將滑鼠懸停在聚集索引更新上,您將看到涉及的其他索引的列表。

堅果

如果您改用 Plan Explorer,您將看到記錄的非聚集索引的數量。

堅果

請參閱Bart Duncan 的寬與窄計劃

引用自:https://dba.stackexchange.com/questions/237326