October 2, 2026
🗄️ Database Statistics 是什麼
在資料庫效能調優的世界裡,Database Statistics 是查詢最佳化器的「眼睛」。沒有準確的統計資訊,最佳化器就像在黑暗中摸索,可能選錯執行計劃,導致查詢效能大幅下降。這時候,UPDATE STATISTICS 就成為維持效能的關鍵操作。

By 思維舞步 MindSteps
2 min read
🔍 Update Statistics SQL 是什麼
- 定義:
UPDATE STATISTICS是 SQL Server 的命令,用來更新表或索引的統計資訊。其他資料庫也有類似命令,例如 Oracle 的DBMS_STATS、PostgreSQL 的ANALYZE、MySQL 的ANALYZE TABLE。 - 作用:讓查詢最佳化器獲得最新的數據分布資訊,從而選擇最合適的執行計劃。
📅 什麼時候要 UPDATE,多久要 UPDATE
什麼時候要 UPDATE:
- 大量新增、刪除或更新數據後。
- 數據分布改變,例如原本均勻分布,後來集中在少數值。
- 索引重建或分區結構改變。
多久要 UPDATE:
- 視乎系統負載與數據變化頻率。交易系統建議每日或每週更新;數據倉庫則可在批量載入後更新。
- 現代資料庫通常有自動更新機制,但在高負載或特殊場景下,手動更新仍然必要。
⚙️ UPDATE 可否 ONLINE 進行
- SQL Server:
UPDATE STATISTICS可在線執行,不會鎖定整個表,但可能造成查詢效能短暫波動。 - Oracle / PostgreSQL / MySQL:
ANALYZE或DBMS_STATS也可在線執行,通常只會消耗額外 I/O,不會阻塞查詢。 - 注意:若表非常大,更新統計可能耗時,建議避開高峰期。
📉 UPDATE 有什麼影響
正面影響:
- 查詢最佳化器能選擇更準確的執行計劃。
- 整體效能提升,避免不必要的全表掃描或錯誤的索引選擇。
負面影響:
- 更新過程消耗 CPU 與 I/O。
- 更新後執行計劃可能改變,導致效能波動(有時反而變慢)。
- 若更新過於頻繁,會增加系統負擔。
🪞 比喻章節
可以把 Database Statistics 想像成地圖與交通數據:
- 地圖:顯示道路分布(表結構、索引)。
- 交通數據:顯示哪條路擠塞、哪條路暢通(數據分布、基數)。
- 導航系統(最佳化器):根據地圖與交通數據,決定走高速公路還是小路。
如果地圖過時或交通數據不準確,導航系統可能選錯路,導致「塞車」 — 這就像統計資訊失效,查詢效能大幅下降。把 UPDATE STATISTICS 想像成更新導航地圖:
- 舊地圖:道路存在,但交通狀況已經過時。
- 新地圖:提供最新的交通數據,導航系統能選擇最佳路線。
- 更新過程:需要下載新地圖,可能暫時耗費網絡資源,但之後導航更準確。
🛠️ 最佳實踐
- 定期更新核心大表的統計資訊,尤其是交易系統。
- 在批量載入或大規模更新後立即更新統計。
- 避開高峰期執行,減少對使用者的影響。
- 建立執行計劃基線,避免統計更新後效能波動。
- 配合自動更新機制,必要時手動補充。
🎯 結語
UPDATE STATISTICS 是資料庫效能維護的重要工具。它讓查詢最佳化器能「看清楚」數據分布,選擇最有效率的執行路徑。
👉 一句話總結:UPDATE STATISTICS 就像更新導航地圖,雖然需要花費資源,但能確保查詢走在最暢通的路上,避免效能陷阱。