星期四, 7月 27, 2023

[SQL] 大量更新造成統計資訊老舊

該實務情況為公司產線單位有調整,為維持 AP 端運作資料上有進行大量更新,以往產線是依靠 [工單檔頭 Table] 的 [未完工 Index] 先跑篩選資料再進行後續,但資料大量更新後統計資訊不準確且剛好 pass 掉下述三種統計資訊維護情況
  • 資料大量更新後沒有手動更新
  • 未達到自動更新門檻
  • 每月排程更新時程也還沒到
所以最近就常出現 blocking 和 deadlock 情況

統計資訊不準確執行計畫

可以看出從 [檔身 Table] 抓出 81,327 筆資料,然後跑 Nested Loop 進 [檔頭 Table] 內,最後只抓出 414 筆資料而且 [Index Seek Operator] 內的 Actual Row (81,327) 和 Estimated Row (1) 差異過大



統計資訊更新後執行計畫

從 [檔頭 Table] 開始跑,只抓出 494 筆資料出來運作而已


Logical Read 比較

懶得去計算改善多少倍了,XD

Table 統計資訊不精確 更新統計資訊後
檔頭 243,819 9
檔身 326,184 2,551

沒有留言:

張貼留言