DB2 採用成本基礎優化器(CBO),根據 CPU 成本、I/O 成本、系統目錄統計資訊及 SQL 語句本身四大因子,評估所有可能存取路徑並選擇成本最低者。優化流程包含:語法檢查 → 依環境資訊生成最佳計劃 → 轉換為機器指令執行 → 回傳或快取結果。
系統目錄統計資訊直接決定優化器判斷準確度,主要包含:
SYSCAT.TABLES/SYSSTAT.TABLES)SYSCAT.COLUMNS/SYSSTAT.COLUMNS)SYSCAT.INDEXES/SYSSTAT.INDEXES)CREATE INDEX 時同步更新)TABLESAMPLE SYSTEM (20))db2 runstats on table db2inst1.staff with distribution and detailed indexes all
ALTER TABLE ... VOLATILE CARDINALITY,強制優化器偏好索引掃描。REORGCHK UPDATE STATISTICS ON TABLE SYSTEM/USER 自動判斷是否需 REORG。db2 update db cfg using AUTO_MAINT off AUTO_TBL_MAINT off AUTO_RUNSTATS off
8.2 版引入自動統計收集,但會帶來額外負載;建議關閉,改由排程手動控制。