1. 程式人生 > >ORACLE 分析表

ORACLE 分析表

1、作用:Oracle分析表的作用:用來收集統計資訊,為了使基於CBO的執行計劃更加準確。
2、對資料表的分析,有兩種方式:
      A、analyze table 
            analyze table tablename compute statistics 
            Analyze index|cluster indexname estimate statistics;
            analyze table  tablename estimate statistics sample 20 percent;
     B、分析整個使用者或資料庫,還可以採用工具包,可以並行分析Dbms_stats(8i以後提供的工具包)
           dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
這是對命令與工具包的一些總結
1)、對於分割槽表,建議使用DBMS_STATS,而不是使用Analyze語句。 
a) 可以並行進行,對多個使用者,多個Table 
b) 可以得到整個分割槽表的資料和單個分割槽的資料。 
c) 可以在不同級別上Compute Statistics:單個分割槽,子分割槽,全表,所有分割槽 
d) 可以倒出統計資訊 
e) 可以使用者自動收集統計資訊 
2)、DBMS_STATS的缺點 
a) 不能Validate Structure 
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的資訊,這兩個仍舊需要使用Analyze語句。 
c) DBMS_STATS 預設不對索引進行Analyze,因為預設Cascade是False,需要手工指定為True 
3)、對於oracle 9裡面的External Table,Analyze不能使用,只能使用DBMS_STATS來收集資訊