實驗建立唯一索引 NAME_IND 於 STAFF(name,id),執行 RUNSTATS WITH DISTRIBUTION AND INDEXES ALL 後查詢:
SELECT name FROM staff WHERE id=10 ORDER BY name
生產存取路徑為 IXSCAN NAME_IND,成本 0.111。
db2look -d sample -e -a -m -t STAFF -o db2look.outdb2look.out 中索引統計:FIRSTKEYCARD、FULLKEYCARD、NUMRIDS 從 35 改為 37。db2 -tvf db2look.out,報錯:SQL1227N The catalog statistic "37" for column "FULLKEYCARD"
is out of range ... Reason Code = "8".
原因:FULLKEYCARD (37) > TABLE CARD (35),違反統計資料一致性約束。
db2look.out 成功。TBSCAN + SORT,成本 12.972,與原 IXSCAN 差異極大。-m 參數產生的統計更新指令必須全部成功,否則優化器行為將偏離生產環境。RUNSTATS 期間有寫入活動,極易產生表/索引統計不一致(CARD vs FIRSTKEYCARD)。db2look_output.out 所有錯誤並手工修正統計值,確保邏輯一致(如 FULLKEYCARD <= CARD)。