ANALYZE的介绍
使用ANALYZE可以收集或删除对象的统计信息、验证对象的结构、标识表或cluster中的行迁移/行链接信息等。官方文档关于ANALYZE功能介绍如下:
·Collect or delete statistics about an index or index partition, table or table partition, index-organized table, cluster, or scalar object attribute.
·Validate the structure of an index or index partition, table or table partition, index-organized table, cluster, or object reference (REF).
·Identify migrated and chained rows of a table or cluster.
·
ANALYZE的使用
ANALYZE TABLE可以指定分析: 表、所有字段、所有索引字段、所有索引。 若不指定对应对象则表示全部都分析
#完全分析,采样100%
ANALYZE TABLE TABLE_NAME COMPUTE STATISTICS;
ANALYZE TABLE TABLE_NAME COMPUTE STATISTICS FOR TABLE FOR ALL COLUMNS FOR ALL INDEXES;
注意:上面两者是等价的。
#抽样分析,采样40%
ANALYZE TABLE TABLE_NAME ESTIMATE STATISTICS SAMPLE 40 PERCENT;
对于大表而言,收集统计信息相当于全表扫描,相当耗费时间和资源,可以用抽样估算法来收集统计信息,这样就可以节省时间和资源,如果不是要求要有精确数据的话,尽量采用抽样分析法。可以指定采样比例。
分析表统计信息
#仅仅生成表的statistics,不生成列的直方图信息
ANALYZE TABLE TABLE_NAME COMPUTE STATISTICS FOR TABLE;
分析索引字段统计信息
#分析了表,并仅对表上的索引列产生histograms
ANALYZE TABLE TEST COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
分析指定列统计信息
ANALYZE TABLE TEST COMPUTE STATISTICS FORCOLUMNS COLUMN_NAME1, COLUMN_NAME2;
分析所有列统计信息
#分析表,同时生成所有列的histograms
ANALYZE TABLE TEST COMPUTE STATISTICS FOR ALL COLUMNS;
分析索引统计信息
#指定索引分析
SQL> ANALYZE INDEX INDEX_NAME COMPUTE STATISTICS ;
#分析所有索引
SQL> ANALYZE TABLE TABLE_NAME COMPUTE STATISTICS FOR ALL INDEXES;
删除统计信息
#删除统计分析数据
ANALYZE TABLE DELETE STATISTICS;
#删除索引对应的统计信息
ANALYZE INDEX DELETE STATISTICS;
#注意:下面这种语法是错误的,见过有些文章有介绍这种方法。