要对数据库对象生成统计信息,可以有以下方法:
完全统计法:analyze table table_name compute statistics;
抽样估计法:analyze table table_name estimate statistics sample 30 percent;
其中,完全统计可以针对表的不同内容进行统计,如:
analyze table t1 compute statistics for table;
analyze table t2 compute statistics for all columns;
analyze table t3 compute statistics for all indexed columns;
analyze table my_table delete statistics for table for all indexes for all indexed columns;
抽样估计法也可用类似语法。
除了使用语句,也可以使用系统的DBMS包来完成统计分析的工作:
1) DBMS_DDL.ANALYZE_OBJECT(
TYPE VARCHAR2,
SCHEMA VARCHAR2,
NAME VARCHAR2,
METHOD VARCHAR2,
ESTIMATE_ROWS NUMBER DEFAULT NULL,
ESTIMATE_PERCENT NUMBER DEFAULT NULL,
METHOD_OPT VARCHAR2 DEFAULT NULL,
PARTNAME VARCHAR2 DEFAULT NULL ) ;
2) DBMS_UTILITY.ANALYZE_SCHEMA (
SCHEMA VARCHAR2,
METHOD VARCHAR2,
ESTIMATE_ROWS NUMBER DEFAULT NULL,
ESTIMATE_PERCENT NUMBER DEFAULT NULL,
METHOD_OPT VARCHAR2 DEFAULT NULL ) ;
DBMS_UTILITY.ANALYZE_DATABASE (
METHOD VARCHAR2,
ESTIMATE_ROWS NUMBER DEFAULT NULL,
ESTIMATE_PERCENT NUMBER DEFAULT NULL,
METHOD_OPT VARCHAR2 DEFAULT NULL );
3)DBMS_STATS:
DBMS_STATS.GATHER_TABLE_STATS
DBMS_STATS.GATHER_INDEX_STATS
DBMS_STATS.GATHER_SCHEMA_STATS
DBMS_STATS.GATHER_DATABASE_STATS
--包中相关参数解释:
包中的存储过程的相关参数解释如下:
TYPE可以是:TABLE,INDEX,CLUSTER中其一。
SCHEMA为:TABLE,INDEX,CLUSTER的所有者,NULL为当前用户。
NAME为:相关对象的名称。
METHOD是:ESTIMATE,COMPUTE,DELETE中其一,当选用ESTIMATE,下面两项,ESTIMATE_ROWS和ESTIMATE_PERCENT不能同时为空值。
ESTIMATE_ROWS是:估算的抽样行数。
ESTIMATE_PERCENT是:估算的抽样百分比。
METHOD_OPT是:有以下选项,
FOR TABLE
[FOR ALL [INDEXED] COLUMNS] [SIZE N]
FOR ALL INDEXES
PARTNAME是:指定要分析的分区名称。