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來收集資訊