Oracle 分析表是資料庫管理的關鍵環節,其核心目的是收集統計資訊,讓成本基礎優化器(CBO)能夠制定最優執行計畫。準確的統計資訊直接決定 SQL 查詢效能的好壞。
ANALYZE TABLE table_name COMPUTE STATISTICS;
等同於:
ANALYZE TABLE table_name COMPUTE STATISTICS
FOR TABLE FOR ALL INDEXES FOR ALL COLUMNS;
| 統計類型 | 對應視圖(USER/ALL/DBA 前綴) |
|---|---|
| 表級統計 | _TABLES |
| 索引統計 | _INDEXES |
| 欄位統計 | _TAB_COLUMNS |
ANALYZE TABLE table_name DELETE STATISTICS;
Oracle 官方強烈建議使用 DBMS_STATS 套件取代 ANALYZE。其優勢包括:
GATHER_TABLE_STATS、GATHER_SCHEMA_STATS 等豐富程序執行分析後,可查詢 USER_TABLES 觀察關鍵欄位變化:
NUM_ROWS:列數BLOCKS:區塊數AVG_SPACE:平均可用空間AVG_ROW_LEN:平均列長度這些數值的變化直觀反映資料分佈狀況,是調優的重要依據。
除收集統計資訊外,ANALYZE 還可用於:
VALIDATE STRUCTURE)LIST CHAINED ROWS)