【经验】【ORACLE】对象分析统计总结

要对数据库对象生成统计信息,可以有以下方法:

  完全统计法: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是:指定要分析的分区名称。

原文地址:https://www.cnblogs.com/AzikPhil/p/oracle_analyze_table.html