目录
定义
schema
TABLE table
分析表受以下限制
partition_extension_clause
INDEX index
对分析索引的限制
CLUSTER cluster
validation_clauses
VALIDATE REF UPDATE Clause
SET DANGLING TO NULL
VALIDATE STRUCTURE
CASCADE
ONLINE | OFFLINE
Restriction on ONLINE
INTO
LIST CHAINED ROWS
UTLCHAIN.SQL
UTLCHN1.SQL
DELETE STATISTICS
创建表、字段、索引统计信息
删除统计信息
定义
使用 ANALYZE 语句收集统计信息
比如
收集或删除有关索引或索引分区、表或表分区、索引组织表、群集或标量对象属性的统计信息。
验证索引或索引分区、表或表分区、索引组织表、群集或对象引用 (REF) 的结构。
识别表或群集的迁移和链行。
使用 ANALYZE 收集优化器统计信息已过时。 如果要收集优化器统计信息,可使用 DBMS_STATS 包,它允许并行收集分区对象的全局统计信息,并通过其他方式微调统计信息集合。
前提
要分析的用户对象必须在本地,并且它必须在当前用户中,或者该用户具有 ANALYZE ANY权限。 如果要将表或群集的链行列到列表表中,则列表表必须放在当前用户中,列表表上必须具有 INSERT 权限,或者必须具有 INSERT ANY TABLE 权限。 如果要验证分区表,则必须在列出已分析的行数的表上具有 INSERT 对象权限,或者必须具有INSERT ANY TABLE 系统权限。
![](https://i-blog.csdnimg.cn/blog_migrate/bc9b3336b4b22fef9d3a9b0fef97bfcb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/594dee3eec9dc42f045bbfb15ab02687.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e3c6ab568a5e8db714558097d0bebff2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f6776665105605678e431383010c29ee.png)
语意
schema
指定包含表、索引或群集的集合。如果省略schema,则 Oracle 数据库假定表、索引或群集位于当前用户集合中。
TABLE table
指定要分析的表。分析表时,数据库也收集有关任何基于函数的索引中发生的表达式的统计信息。因此,在分析表之前,需要确保在表上创建基于函数的索引。
分析表时,数据库将跳过标记为"LOADING"或"FAILED"的所有域索引。
对于索引组织的表,数据库还分析每一个映射表并计算其PCT_ACCESSS_DIRECT统计信息。这些统计信息估计了作为映射表中本地行数的一部分存储的猜测数据块地址的准确性。
Oracle 数据库收集表的以下统计信息。始终准确计算标有星号的统计信息。表统计信息(包括域索引的状态)显示在数据字典视图中USER_TABLES、ALL_TABLES和DBA_TABLES括号中显示的列中。
行数(NUM_ROWS)
低于高水位线的数据块数 — 已格式化以接收数据的数据块数,无论它们当前是否包含数据或为空(块)
分配给从未使用过的数据块数(EMPTY_BLOCKS)
每个数据块的平均可用空间(以字节为单位AVG_SPACE)
链行数(CHAIN_COUNT)
平均行长度(包括行开销),以字节为单位(AVG_ROW_LEN) 对分析表的限制
分析表受以下限制
不能使用 ANALYZE 收集数据字典表的统计信息。
不能使用 ANALYZE 收集外部表上的统计信息。相反,必须使用DBMS_STATS包
不能使用 ANALYZE 收集临时表上的默认统计信息。但是,如果已在临时表的一个或多个列与用户定义的统计信息类型之间创建了关联,则可以使用 ANALYZE 收集临时表上的用户定义的统计信息。
不能计算或估计以下列类型的统计信息:REF 列类型、varray、嵌套表、LOB 列类型(未分析 LOB 列类型会跳过)、长列类型或对象类型。但是,如果统计信息类型与此类列关联,则 Oracle 数据库将收集用户定义的统计信息。
partition_extension_clause
指定要收集统计信息的分区、子分区,或分区、子分区值。分析群集时不能使用此子句。 如果指定分区和表是复合分区,则 Oracle 数据库将分析指定分区内的所有子分区。
INDEX index
指定要分析的索引。 Oracle 数据库收集索引的以下统计信息。始终准确计算标有星号的统计信息。对于常规索引,在计算或估计统计信息时,统计信息将显示在数据字典视图中USER_INDEXES、ALL_INDEXES和DBA_INDEXES括号中显示的列中。
索引从根块到叶块的深度 (BLEVEL)
叶块数(LEAF_BLOCKS)
不同索引值的数量(DISTINCT_KEYS)
每个索引值的平均叶块数(AVG_LEAF_BLOCKS_PER_KEY)
每个索引值的平均数据块数(对于表上的索引)(AVG_DATA_BLOCKS_PER_KEY)
聚类因子(行的排序与索引值的排序)(CLUSTERING_FACTOR)
对于域索引,此语句调用与索引关联的统计信息类型中指定的用户定义的统计信息收集函数。如果没有统计信息类型与域索引关联,则使用与其索引类型关联的统计信息类型。如果索引及其索引类型不存在统计信息类型,则不会收集用户定义的统计信息。用户定义的索引统计信息显示在数据字典视图的统计信息USER_USTATS、ALL_USTATS和DBA_USTATS。
注意
:
当分析从中删除大量行的索引时,
Oracle
数据库有时会执行计算统计信息操作(这可能需要进行完整的表扫描),即使您请求了
ESTIMATE
统计操作。这样的操作可能相当耗时。
在某些情况下,使用
ANALYZE
语句分析索引需要花费过多的时间才能完成。在这些情况下,可以使用
SQL
查询来验证索引。如果查询确定表和索引之间有不一致,则可以使用
ANALYZE
语句对索引进行透彻分析。
对分析索引的限制
不能分析标记为"IN_PROGRESS"或"FAILED"域索引。
CLUSTER cluster
指定要分析的群集。收集群集统计信息时,Oracle 数据库还会自动收集群集中所有表及其所有索引(包括群集索引)的统计信息。 对于索引群集和哈希群集,数据库收集单个群集键(未包含)所收集的平均数据块AVG_BLOCKS_PER_KEY。这些统计信息显示在数据字典视图ALL_CLUSTERS USER_CLUSTERS和DBA_CLUSTERS。
validation_clauses
验证子句允许验证 REF 值和分析对象的结构。
VALIDATE REF UPDATE Clause
指定验证 REF UPDATE 以验证指定表中的 REF 值,检查每个 REF 中的行规则部分,将其与真实行数进行比较,并必要时更正。只有在分析表时才能使用此子句。 如果表的所有者对引用的对象没有 READ 或 SELECT 对象权限,则 Oracle 数据库将认为它们无效,并将它们设置为 null。随后,这些 REF 值在查询中不可用,即使该值是由具有对象权限的用户颁发的。
SET DANGLING TO NULL
以空指定表中发现指向无效或不存在的对象的任何 REF 值(无论是否作用域化)
VALIDATE STRUCTURE
指定验证结构以验证分析对象的结构。此子句收集的统计信息不由 Oracle 数据库使用
小结
对于表,
Oracle
数据库验证每个数据块和行的完整性。对于索引组织的表,数据库还为表上的主要键索引生成压缩统计信息(最佳前缀压缩计数)。对于群集,
Oracle
数据库会自动验证群集表的结构。对于分区表,
Oracle
数据库还验证每一行是否属于正确的分区。如果一行未正确整理,则其行将插入到
INVALID_ROWS
中。对于临时表,
Oracle
数据库在当前会话期间验证表的结构及其索引。对于索引,
Oracle
数据库验证索引中每个数据块的完整性,并检查块损坏。此子句不确认表中的每一行都有索引条目,或者每个索引条目指向表中的一行。您可以通过使用
CASCADE
子句验证表的结构来执行这些操作。
Oracle
数据库还计算所有正常索引的压缩统计信息(最佳前缀压缩计数)。
Oracle
数据库在数据字典视图中存储有关索引的统计信息
INDEX_STATS
和
INDEX_HISTOGRAM
。
如果
Oracle
数据库在对象结构中遇到损坏,则返回一条错误消息。在这种情况下,删除并重新创建对象。
CASCADE
如果希望 Oracle 验证与表或群集关联的索引的结构,请指定 CASCADE。如果在验证表时使用此子句,则数据库还将验证在表上定义的索引。如果在验证群集时使用此子句,则数据库还将验证所有群集表索引,包括群集索引。 默认情况下,CASCADE 执行"完整"验证,这其中可能非常密集。如果希望数据库检查是否存在损坏而不报告有关损坏的详细信息,需指定 FAST。如果 FAST 检查发现损坏,则可以使用不带 FAST 子句的 CASCADE 选项来查找和了解有关它的详细信息。 如果使用此子句验证启用(但以前禁用)基于函数的索引,则可能会导致验证错误。在这种情况下,必须重新生成索引。
ONLINE | OFFLINE
指定 ONLINE 以使 Oracle 数据库在对象内执行 DML 操作时运行验证。可以减少允许并发的验证量。
注意:
验证对象
ONLINE
的结构时,
Oracle
数据库不会收集任何统计信息,就像验证对象
ONLINE
的结构时那样。
指定 OFFLINE,以最大化执行的验证量。此设置可防止 INSERT、UPDATE 和 DDELETE语句在验证期间同时访问对象,但允许查询。为默认值
Restriction on ONLINE
分析群集时无法指定联机。
INTO
验证结构的 INTO 子句仅对分区表有效。指定 Oracle 数据库在其中列出其行无法正确排序的分区的行数的表。如果省略schema,则默认为当前用户。如果完全省略此子句,则数据库假定表INVALID_ROWS。用于创建此表的 SQL 脚本是 UTLVALID.SQL。
LIST CHAINED ROWS
识别已分析表或群集的迁移和链行。分析索引时不能使用此子句。 在 INTO 子句中,指定 Oracle 数据库在其中列出迁移行和链行的表。如果省略schemas,则默认为当前用户。如果完全省略此子句,则数据库假定表CHAINED_ROWS。链行表必须放在本地数据库上。
可以使用以下脚本CHAINED_ROWS创建表
UTLCHAIN.SQL
使用物理rowid。它可以容纳来自常规表的行,但无法容纳索引组织的表中的行。
UTLCHN1.SQL
使用通用的rowid,因此它可以容纳来自常规表和索引组织的表中的行。
如果创建自己的链行表,必须遵循这两个脚本之一规定的格式。
如果要根据主键(而不是通用rowids)分析索引组织的表,则必须为每个索引组织的表创建单独的链行表,以适应其主键存储。SQL 脚本 DBMSIOTC.SQL 和 PRVTIOTC.PLB 用于定义BUILD_CHAIN_ROWS_TABLE过程,然后执行此存储过程,为每个此类IOT_CHAINED_ROWS的 表创建一个索引表
DELETE STATISTICS
指定删除统计信息以删除有关当前存储在数据字典中的分析对象的任何统计信息。当不再需要 Oracle 数据库使用统计信息时,可以使用。
在表上使用此子句时,数据库还会自动删除表上定义的所有索引的统计信息。
在群集上使用此子句时,数据库还会自动删除所有群集表及其所有索引(包括群集索引)的统计信息。 如果希望 Oracle 数据库仅删除system(而不是用户定义的)统计信息,请指定system。如果省略 SYSTEM,并且为对象收集了用户定义的列或索引统计信息,则数据库还通过调用用于收集统计信息的统计信息类型中指定的统计信息删除函数来删除用户定义的统计信息
创建表、字段、索引统计信息
创建表TB_ANALYZE01、TB_ANALYZE02、TB_ANALYZE03、TB_ANALYZE04、TB_ANALYZE05、TB_ANALYZE06
SQL> create table TB_ANALYZE01 as select * from user_objects; Table created. SQL> create table TB_ANALYZE02 as select * from user_objects; Table created. SQL> create table TB_ANALYZE03 as select * from user_objects; Table created. SQL> create table TB_ANALYZE04 as select * from user_objects; Table created. SQL> create table TB_ANALYZE05 as select * from user_objects; Table created. SQL> create table TB_ANALYZE06 as select * from user_objects; Table created. |
创建索引
SQL> create unique index PK_ANALYZE01 on TB_ANALYZE01(object_id); Index created. SQL> create unique index PK_ANALYZE02 on TB_ANALYZE02(object_id); Index created. SQL> create unique index PK_ANALYZE03 on TB_ANALYZE03(object_id); Index created. SQL> create unique index PK_ANALYZE04 on TB_ANALYZE04(object_id); Index created. SQL> create unique index PK_ANALYZE05 on TB_ANALYZE05(object_id); Index created. SQL> create unique index PK_ANALYZE06 on TB_ANALYZE06(object_id); Index created. |
建表之初查看表的统计信息
SQL> select table_name,num_rows,blocks,empty_blocks from user_tables where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS -------------------- ---------- ---------- ------------ TB_ANALYZE01 269 8 0 TB_ANALYZE02 270 8 0 TB_ANALYZE03 271 8 0 TB_ANALYZE04 272 8 0 TB_ANALYZE05 273 8 0 TB_ANALYZE06 274 8 0 6 rows selected. |
查看字段统计信息
查看索引的统计信息
SQL> select table_name,index_name,blevel,leaf_blocks,distinct_keys,avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key avg_data_blocks,clustering_factor,num_rows from user_indexes where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME INDEX_NAME BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS AVG_DATA_BLOCKS CLUSTERING_FACTOR NUM_ROWS ------------ ------------ ------ ----------- ------------- --------------- --------------- ----------------- -------- TB_ANALYZE01 PK_ANALYZE01 0 1 269 1 1 8 269 TB_ANALYZE02 PK_ANALYZE02 0 1 270 1 1 8 270 TB_ANALYZE03 PK_ANALYZE03 0 1 271 1 1 8 271 TB_ANALYZE04 PK_ANALYZE04 0 1 272 1 1 8 272 TB_ANALYZE05 PK_ANALYZE05 0 1 273 1 1 8 273 TB_ANALYZE06 PK_ANALYZE06 0 1 274 1 1 8 274 6 rows selected. |
删除这些表的一些内容
SQL> delete TB_ANALYZE01 where OBJECT_ID in (select OBJECT_ID from TB_ANALYZE01 where rownum<=15); 15 rows deleted. SQL> delete TB_ANALYZE02 where OBJECT_ID in (select OBJECT_ID from TB_ANALYZE02 where rownum<=15); 15 rows deleted. SQL> delete TB_ANALYZE03 where OBJECT_ID in (select OBJECT_ID from TB_ANALYZE03 where rownum<=15); 15 rows deleted. SQL> delete TB_ANALYZE04 where OBJECT_ID in (select OBJECT_ID from TB_ANALYZE04 where rownum<=15); 15 rows deleted. SQL> delete TB_ANALYZE05 where OBJECT_ID in (select OBJECT_ID from TB_ANALYZE05 where rownum<=15); 15 rows deleted. SQL> delete TB_ANALYZE06 where OBJECT_ID in (select OBJECT_ID from TB_ANALYZE06 where rownum<=15); 15 rows deleted. |
再次查看统计信息
SQL> select table_name,num_rows,blocks,empty_blocks from user_tables where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS ------------ -------- ---------- ------------ TB_ANALYZE01 269 8 0 TB_ANALYZE02 270 8 0 TB_ANALYZE03 271 8 0 TB_ANALYZE04 272 8 0 TB_ANALYZE05 273 8 0 TB_ANALYZE06 274 8 0 6 rows selected. SQL> select table_name,column_name,num_distinct,low_value,high_value,density from user_tab_columns where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY ------------ ------------------ ------------ -------------------------------------- -------------------------------------- ---------- TB_ANALYZE01 MODIFIED_VSNID 0 0 TB_ANALYZE01 MODIFIED_APPID 0 0 TB_ANALYZE01 CREATED_VSNID 0 0 TB_ANALYZE01 CREATED_APPID 0 0 TB_ANALYZE01 SHARDED 1 4E 4E 1 TB_ANALYZE01 DUPLICATED 1 4E 4E 1 TB_ANALYZE01 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE01 APPLICATION 1 4E 4E 1 TB_ANALYZE01 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE01 EDITIONABLE 1 59 59 1 TB_ANALYZE01 SHARING 1 4E4F4E45 4E4F4E45 1 TB_ANALYZE01 EDITION_NAME 0 0 TB_ANALYZE01 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE01 SECONDARY 1 4E 4E 1 TB_ANALYZE01 GENERATED 2 4E 59 .5 TB_ANALYZE01 TEMPORARY 2 4E 59 .5 TB_ANALYZE01 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE01 TIMESTAMP 78 323032312D30312D30373A30363A35393A3034 323032312D30322D30333A31363A34383A3535 .012820513 TB_ANALYZE01 LAST_DDL_TIME 73 78790107073C05 78790203113138 .01369863 TB_ANALYZE01 CREATED 76 78790107073C05 78790203113138 .013157895 TB_ANALYZE02 MODIFIED_APPID 0 .003703704 TB_ANALYZE02 CREATED_VSNID 0 .003703704 TB_ANALYZE02 CREATED_APPID 0 .003703704 TB_ANALYZE02 SHARDED 1 4E 4E .007352941 TB_ANALYZE02 DUPLICATED 1 4E 4E .007352941 TB_ANALYZE02 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 .009433962 TB_ANALYZE02 APPLICATION 1 4E 4E .007352941 TB_ANALYZE02 ORACLE_MAINTAINED 1 4E 4E .007352941 TB_ANALYZE02 EDITIONABLE 1 59 59 1 TB_ANALYZE02 SHARING 1 4E4F4E45 4E4F4E45 .007352941 TB_ANALYZE02 EDITION_NAME 0 .003703704 TB_ANALYZE02 NAMESPACE 3 C102 C109 .001851852 TB_ANALYZE02 SECONDARY 1 4E 4E .007352941 TB_ANALYZE02 GENERATED 2 4E 59 .001851852 TB_ANALYZE02 TEMPORARY 2 4E 59 .001851852 TB_ANALYZE02 STATUS 2 494E56414C4944 56414C4944 .001851852 TB_ANALYZE02 TIMESTAMP 79 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34363A3535 .006233062 TB_ANALYZE02 LAST_DDL_TIME 74 78790107073C05 787902050C2F38 .001851852 TB_ANALYZE02 CREATED 77 78790107073C05 787902050C2F38 .004604605 TB_ANALYZE02 OBJECT_TYPE 6 494E444558 56494557 .001851852 TB_ANALYZE02 DATA_OBJECT_ID 250 C3082534 C3083F43 .004 TB_ANALYZE02 OBJECT_ID 270 C3082532 C3083F43 .003703704 TB_ANALYZE02 SUBOBJECT_NAME 0 .003703704 TB_ANALYZE02 OBJECT_NAME 270 413031 5A44 .003703704 TB_ANALYZE03 MODIFIED_VSNID 0 0 TB_ANALYZE01 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE01 DATA_OBJECT_ID 249 C3082534 C3083F1C .004016064 TB_ANALYZE01 OBJECT_ID 269 C3082532 C3083F1C .003717472 TB_ANALYZE01 SUBOBJECT_NAME 0 0 TB_ANALYZE01 OBJECT_NAME 269 413031 5A44 .003717472 TB_ANALYZE02 MODIFIED_VSNID 0 .003703704 TB_ANALYZE03 MODIFIED_APPID 0 0 TB_ANALYZE03 CREATED_VSNID 0 0 TB_ANALYZE03 CREATED_APPID 0 0 TB_ANALYZE03 SHARDED 1 4E 4E 1 TB_ANALYZE03 DUPLICATED 1 4E 4E 1 TB_ANALYZE05 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE05 SECONDARY 1 4E 4E 1 TB_ANALYZE05 GENERATED 2 4E 59 .5 TB_ANALYZE05 TEMPORARY 2 4E 59 .5 TB_ANALYZE05 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE05 TIMESTAMP 82 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34373A3038 .012195122 TB_ANALYZE05 LAST_DDL_TIME 77 78790107073C05 787902050C3009 .012987013 TB_ANALYZE05 CREATED 80 78790107073C05 787902050C3009 .0125 TB_ANALYZE05 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE05 DATA_OBJECT_ID 253 C3082534 C3083F46 .003952569 TB_ANALYZE05 OBJECT_ID 273 C3082532 C3083F46 .003663004 TB_ANALYZE05 SUBOBJECT_NAME 0 0 TB_ANALYZE05 OBJECT_NAME 273 413031 5A44 .003663004 TB_ANALYZE06 MODIFIED_VSNID 0 .003649635 TB_ANALYZE06 MODIFIED_APPID 0 .003649635 TB_ANALYZE06 CREATED_VSNID 0 .003649635 TB_ANALYZE06 CREATED_APPID 0 .003649635 TB_ANALYZE06 SHARDED 1 4E 4E .007246377 TB_ANALYZE06 DUPLICATED 1 4E 4E .007246377 TB_ANALYZE06 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 .009259259 TB_ANALYZE06 APPLICATION 1 4E 4E .007246377 TB_ANALYZE06 ORACLE_MAINTAINED 1 4E 4E .007246377 TB_ANALYZE06 EDITIONABLE 1 59 59 1 TB_ANALYZE06 SHARING 1 4E4F4E45 4E4F4E45 .007246377 TB_ANALYZE06 EDITION_NAME 0 .003649635 TB_ANALYZE06 NAMESPACE 3 C102 C109 .001824818 TB_ANALYZE06 SECONDARY 1 4E 4E .007246377 TB_ANALYZE06 GENERATED 2 4E 59 .001824818 TB_ANALYZE06 TEMPORARY 2 4E 59 .001824818 TB_ANALYZE06 STATUS 2 494E56414C4944 56414C4944 .001824818 TB_ANALYZE06 TIMESTAMP 83 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34373A3136 .006026142 TB_ANALYZE06 LAST_DDL_TIME 78 78790107073C05 787902050C3011 .005672324 TB_ANALYZE06 CREATED 81 78790107073C05 787902050C3011 .004491859 TB_ANALYZE06 OBJECT_TYPE 6 494E444558 56494557 .001824818 TB_ANALYZE06 DATA_OBJECT_ID 254 C3082534 C3083F47 .003937008 TB_ANALYZE06 OBJECT_ID 274 C3082532 C3083F47 .003649635 TB_ANALYZE06 SUBOBJECT_NAME 0 .003649635 TB_ANALYZE06 OBJECT_NAME 274 413031 5A44 .003649635 TB_ANALYZE05 EDITION_NAME 0 0 TB_ANALYZE03 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE03 APPLICATION 1 4E 4E 1 TB_ANALYZE03 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE03 EDITIONABLE 1 59 59 1 TB_ANALYZE03 SHARING 1 4E4F4E45 4E4F4E45 1 TB_ANALYZE03 EDITION_NAME 0 0 TB_ANALYZE03 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE03 SECONDARY 1 4E 4E 1 TB_ANALYZE03 GENERATED 2 4E 59 .5 TB_ANALYZE03 TEMPORARY 2 4E 59 .5 TB_ANALYZE03 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE03 TIMESTAMP 80 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34363A3539 .0125 TB_ANALYZE03 LAST_DDL_TIME 75 78790107073C05 787902050C2F3C .013333333 TB_ANALYZE03 CREATED 78 78790107073C05 787902050C2F3C .012820513 TB_ANALYZE03 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE03 DATA_OBJECT_ID 251 C3082534 C3083F44 .003984064 TB_ANALYZE03 OBJECT_ID 271 C3082532 C3083F44 .003690037 TB_ANALYZE03 SUBOBJECT_NAME 0 0 TB_ANALYZE03 OBJECT_NAME 271 413031 5A44 .003690037 TB_ANALYZE04 MODIFIED_VSNID 0 .003676471 TB_ANALYZE04 MODIFIED_APPID 0 .003676471 TB_ANALYZE04 CREATED_VSNID 0 .003676471 TB_ANALYZE04 CREATED_APPID 0 .003676471 TB_ANALYZE04 SHARDED 1 4E 4E 1 TB_ANALYZE04 DUPLICATED 1 4E 4E 1 TB_ANALYZE04 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE04 APPLICATION 1 4E 4E 1 TB_ANALYZE04 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE04 EDITIONABLE 1 59 59 1 TB_ANALYZE04 SHARING 1 4E4F4E45 4E4F4E45 1 TB_ANALYZE04 EDITION_NAME 0 .003676471 TB_ANALYZE04 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE04 SECONDARY 1 4E 4E 1 TB_ANALYZE04 GENERATED 2 4E 59 .5 TB_ANALYZE04 TEMPORARY 2 4E 59 .5 TB_ANALYZE04 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE04 TIMESTAMP 81 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34373A3034 .012345679 TB_ANALYZE04 LAST_DDL_TIME 76 78790107073C05 787902050C3005 .013157895 TB_ANALYZE04 CREATED 79 78790107073C05 787902050C3005 .012658228 TB_ANALYZE04 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE04 DATA_OBJECT_ID 252 C3082534 C3083F45 .003968254 TB_ANALYZE04 OBJECT_ID 272 C3082532 C3083F45 .003676471 TB_ANALYZE04 SUBOBJECT_NAME 0 .003676471 TB_ANALYZE04 OBJECT_NAME 272 413031 5A44 .003676471 TB_ANALYZE05 MODIFIED_VSNID 0 0 TB_ANALYZE05 MODIFIED_APPID 0 0 TB_ANALYZE05 CREATED_VSNID 0 0 TB_ANALYZE05 CREATED_APPID 0 0 TB_ANALYZE05 SHARDED 1 4E 4E 1 TB_ANALYZE05 DUPLICATED 1 4E 4E 1 TB_ANALYZE05 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE05 APPLICATION 1 4E 4E 1 TB_ANALYZE05 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE05 EDITIONABLE 1 59 59 1 TB_ANALYZE05 SHARING 1 4E4F4E45 4E4F4E45 1 150 rows selected. SQL> select table_name,index_name,blevel,leaf_blocks,distinct_keys,avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key avg_data_blocks,clustering_factor,num_rows from user_indexes where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME INDEX_NAME BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS AVG_DATA_BLOCKS CLUSTERING_FACTOR NUM_ROWS ------------ ------------ ------ ----------- ------------- --------------- --------------- ----------------- -------- TB_ANALYZE01 PK_ANALYZE01 0 1 269 1 1 8 269 TB_ANALYZE02 PK_ANALYZE02 0 1 270 1 1 8 270 TB_ANALYZE03 PK_ANALYZE03 0 1 271 1 1 8 271 TB_ANALYZE04 PK_ANALYZE04 0 1 272 1 1 8 272 TB_ANALYZE05 PK_ANALYZE05 0 1 273 1 1 8 273 TB_ANALYZE06 PK_ANALYZE06 0 1 274 1 1 8 274 6 rows selected. |
并未发生变化
结论:在创建表的时候会立刻收集统计信息,而在表发生变化的时候,不会立刻收集
针对表收集信息
SQL> analyze table TB_ANALYZE01 compute statistics for table; Table analyzed. |
针对字段收集信息
SQL> analyze table TB_ANALYZE02 compute statistics for all columns; Table analyzed. |
收集索引字段信息
SQL> analyze table TB_ANALYZE03 compute statistics for all indexed columns; Table analyzed. |
收集表、字段、索引信息
SQL> analyze table TB_ANALYZE04 compute statistics; Table analyzed. |
收集索引信息
SQL> analyze table TB_ANALYZE05 compute statistics for all indexes; Table analyzed. |
收集表、索引、字段信息
SQL> analyze table TB_ANALYZE06 compute statistics for all indexes for all columns; Table analyzed. |
再次查看统计信息
SQL> select table_name,num_rows,blocks,empty_blocks from user_tables where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS ------------ -------- ---------- ------------ TB_ANALYZE01 254 16 0 TB_ANALYZE02 270 8 0 TB_ANALYZE03 271 8 0 TB_ANALYZE04 257 8 0 TB_ANALYZE05 273 8 0 TB_ANALYZE06 274 8 0 6 rows selected. SQL> select table_name,column_name,num_distinct,low_value,high_value,density from user_tab_columns where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY ------------ ------------------ ------------ -------------------------------------- -------------------------------------- ---------- TB_ANALYZE01 MODIFIED_VSNID 0 0 TB_ANALYZE01 MODIFIED_APPID 0 0 TB_ANALYZE01 CREATED_VSNID 0 0 TB_ANALYZE01 CREATED_APPID 0 0 TB_ANALYZE01 SHARDED 1 4E 4E 1 TB_ANALYZE01 DUPLICATED 1 4E 4E 1 TB_ANALYZE01 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE01 APPLICATION 1 4E 4E 1 TB_ANALYZE01 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE01 EDITIONABLE 1 59 59 1 TB_ANALYZE01 SHARING 1 4E4F4E45 4E4F4E45 1 TB_ANALYZE01 EDITION_NAME 0 0 TB_ANALYZE01 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE01 SECONDARY 1 4E 4E 1 TB_ANALYZE01 GENERATED 2 4E 59 .5 TB_ANALYZE01 TEMPORARY 2 4E 59 .5 TB_ANALYZE01 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE01 TIMESTAMP 78 323032312D30312D30373A30363A35393A3034 323032312D30322D30333A31363A34383A3535 .012820513 TB_ANALYZE01 LAST_DDL_TIME 73 78790107073C05 78790203113138 .01369863 TB_ANALYZE01 CREATED 76 78790107073C05 78790203113138 .013157895 TB_ANALYZE02 MODIFIED_APPID 0 .003921569 TB_ANALYZE02 CREATED_VSNID 0 .003921569 TB_ANALYZE02 CREATED_APPID 0 .003921569 TB_ANALYZE02 SHARDED 1 4E 4E .0078125 TB_ANALYZE02 DUPLICATED 1 4E 4E .0078125 TB_ANALYZE02 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 .009803922 TB_ANALYZE02 APPLICATION 1 4E 4E .0078125 TB_ANALYZE02 ORACLE_MAINTAINED 1 4E 4E .0078125 TB_ANALYZE02 EDITIONABLE 1 59 59 1 TB_ANALYZE02 SHARING 1 4E4F4E45 4E4F4E45 .0078125 TB_ANALYZE02 EDITION_NAME 0 .003921569 TB_ANALYZE02 NAMESPACE 3 C102 C109 .001960784 TB_ANALYZE02 SECONDARY 1 4E 4E .0078125 TB_ANALYZE02 GENERATED 2 4E 59 .001960784 TB_ANALYZE02 TEMPORARY 2 4E 59 .001960784 TB_ANALYZE02 STATUS 2 494E56414C4944 56414C4944 .001960784 TB_ANALYZE02 TIMESTAMP 79 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34363A3535 .006599713 TB_ANALYZE02 LAST_DDL_TIME 74 78790107073C05 787902050C2F38 .001960784 TB_ANALYZE02 CREATED 77 78790107073C05 787902050C2F38 .004875464 TB_ANALYZE02 OBJECT_TYPE 6 494E444558 56494557 .001960784 TB_ANALYZE02 DATA_OBJECT_ID 235 C3082534 C3083F43 .004255319 TB_ANALYZE02 OBJECT_ID 255 C3082532 C3083F43 .003921569 TB_ANALYZE02 SUBOBJECT_NAME 0 .003921569 TB_ANALYZE02 OBJECT_NAME 255 413031 5A44 .003921569 TB_ANALYZE03 MODIFIED_VSNID 0 0 TB_ANALYZE01 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE01 DATA_OBJECT_ID 249 C3082534 C3083F1C .004016064 TB_ANALYZE01 OBJECT_ID 269 C3082532 C3083F1C .003717472 TB_ANALYZE01 SUBOBJECT_NAME 0 0 TB_ANALYZE01 OBJECT_NAME 269 413031 5A44 .003717472 TB_ANALYZE02 MODIFIED_VSNID 0 .003921569 TB_ANALYZE03 MODIFIED_APPID 0 0 TB_ANALYZE03 CREATED_VSNID 0 0 TB_ANALYZE03 CREATED_APPID 0 0 TB_ANALYZE03 SHARDED 1 4E 4E 1 TB_ANALYZE03 DUPLICATED 1 4E 4E 1 TB_ANALYZE05 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE05 SECONDARY 1 4E 4E 1 TB_ANALYZE05 GENERATED 2 4E 59 .5 TB_ANALYZE05 TEMPORARY 2 4E 59 .5 TB_ANALYZE05 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE05 TIMESTAMP 82 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34373A3038 .012195122 TB_ANALYZE05 LAST_DDL_TIME 77 78790107073C05 787902050C3009 .012987013 TB_ANALYZE05 CREATED 80 78790107073C05 787902050C3009 .0125 TB_ANALYZE05 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE05 DATA_OBJECT_ID 253 C3082534 C3083F46 .003952569 TB_ANALYZE05 OBJECT_ID 273 C3082532 C3083F46 .003663004 TB_ANALYZE05 SUBOBJECT_NAME 0 0 TB_ANALYZE05 OBJECT_NAME 273 413031 5A44 .003663004 TB_ANALYZE06 MODIFIED_VSNID 0 .003861004 TB_ANALYZE06 MODIFIED_APPID 0 .003861004 TB_ANALYZE06 CREATED_VSNID 0 .003861004 TB_ANALYZE06 CREATED_APPID 0 .003861004 TB_ANALYZE06 SHARDED 1 4E 4E .007692308 TB_ANALYZE06 DUPLICATED 1 4E 4E .007692308 TB_ANALYZE06 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 .009433962 TB_ANALYZE06 APPLICATION 1 4E 4E .007692308 TB_ANALYZE06 ORACLE_MAINTAINED 1 4E 4E .007692308 TB_ANALYZE06 EDITIONABLE 1 59 59 1 TB_ANALYZE06 SHARING 1 4E4F4E45 4E4F4E45 .007692308 TB_ANALYZE06 EDITION_NAME 0 .003861004 TB_ANALYZE06 NAMESPACE 3 C102 C109 .001930502 TB_ANALYZE06 SECONDARY 1 4E 4E .007692308 TB_ANALYZE06 GENERATED 2 4E 59 .001930502 TB_ANALYZE06 TEMPORARY 2 4E 59 .001930502 TB_ANALYZE06 STATUS 2 494E56414C4944 56414C4944 .001930502 TB_ANALYZE06 TIMESTAMP 83 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34373A3136 .006375146 TB_ANALYZE06 LAST_DDL_TIME 78 78790107073C05 787902050C3011 .006000837 TB_ANALYZE06 CREATED 81 78790107073C05 787902050C3011 .004752005 TB_ANALYZE06 OBJECT_TYPE 6 494E444558 56494557 .001930502 TB_ANALYZE06 DATA_OBJECT_ID 239 C3082534 C3083F47 .0041841 TB_ANALYZE06 OBJECT_ID 259 C3082532 C3083F47 .003861004 TB_ANALYZE06 SUBOBJECT_NAME 0 .003861004 TB_ANALYZE06 OBJECT_NAME 259 413031 5A44 .003861004 TB_ANALYZE05 EDITION_NAME 0 0 TB_ANALYZE03 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE03 APPLICATION 1 4E 4E 1 TB_ANALYZE03 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE03 EDITIONABLE 1 59 59 1 TB_ANALYZE03 SHARING 1 4E4F4E45 4E4F4E45 1 TB_ANALYZE03 EDITION_NAME 0 0 TB_ANALYZE03 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE03 SECONDARY 1 4E 4E 1 TB_ANALYZE03 GENERATED 2 4E 59 .5 TB_ANALYZE03 TEMPORARY 2 4E 59 .5 TB_ANALYZE03 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE03 TIMESTAMP 80 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34363A3539 .0125 TB_ANALYZE03 LAST_DDL_TIME 75 78790107073C05 787902050C2F3C .013333333 TB_ANALYZE03 CREATED 78 78790107073C05 787902050C2F3C .012820513 TB_ANALYZE03 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE03 DATA_OBJECT_ID 251 C3082534 C3083F44 .003984064 TB_ANALYZE03 OBJECT_ID 256 C3082532 C3083F44 .00390625 TB_ANALYZE03 SUBOBJECT_NAME 0 0 TB_ANALYZE03 OBJECT_NAME 271 413031 5A44 .003690037 TB_ANALYZE04 MODIFIED_VSNID 0 .003891051 TB_ANALYZE04 MODIFIED_APPID 0 .003891051 TB_ANALYZE04 CREATED_VSNID 0 .003891051 TB_ANALYZE04 CREATED_APPID 0 .003891051 TB_ANALYZE04 SHARDED 1 4E 4E 1 TB_ANALYZE04 DUPLICATED 1 4E 4E 1 TB_ANALYZE04 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE04 APPLICATION 1 4E 4E 1 TB_ANALYZE04 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE04 EDITIONABLE 1 59 59 1 TB_ANALYZE04 SHARING 1 4E4F4E45 4E4F4E45 1 TB_ANALYZE04 EDITION_NAME 0 .003891051 TB_ANALYZE04 NAMESPACE 3 C102 C109 .333333333 TB_ANALYZE04 SECONDARY 1 4E 4E 1 TB_ANALYZE04 GENERATED 2 4E 59 .5 TB_ANALYZE04 TEMPORARY 2 4E 59 .5 TB_ANALYZE04 STATUS 2 494E56414C4944 56414C4944 .5 TB_ANALYZE04 TIMESTAMP 81 323032312D30312D30373A30363A35393A3034 323032312D30322D30353A31313A34373A3034 .012345679 TB_ANALYZE04 LAST_DDL_TIME 76 78790107073C05 787902050C3005 .013157895 TB_ANALYZE04 CREATED 79 78790107073C05 787902050C3005 .012658228 TB_ANALYZE04 OBJECT_TYPE 6 494E444558 56494557 .166666667 TB_ANALYZE04 DATA_OBJECT_ID 237 C3082534 C3083F45 .004219409 TB_ANALYZE04 OBJECT_ID 257 C3082532 C3083F45 .003891051 TB_ANALYZE04 SUBOBJECT_NAME 0 .003891051 TB_ANALYZE04 OBJECT_NAME 257 413031 5A44 .003891051 TB_ANALYZE05 MODIFIED_VSNID 0 0 TB_ANALYZE05 MODIFIED_APPID 0 0 TB_ANALYZE05 CREATED_VSNID 0 0 TB_ANALYZE05 CREATED_APPID 0 0 TB_ANALYZE05 SHARDED 1 4E 4E 1 TB_ANALYZE05 DUPLICATED 1 4E 4E 1 TB_ANALYZE05 DEFAULT_COLLATION 1 5553494E475F4E4C535F434F4D50 5553494E475F4E4C535F434F4D50 1 TB_ANALYZE05 APPLICATION 1 4E 4E 1 TB_ANALYZE05 ORACLE_MAINTAINED 1 4E 4E 1 TB_ANALYZE05 EDITIONABLE 1 59 59 1 TB_ANALYZE05 SHARING 1 4E4F4E45 4E4F4E45 1 150 rows selected. SQL> select table_name,index_name,blevel,leaf_blocks,distinct_keys,avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key avg_data_blocks,clustering_factor,num_rows from user_indexes where table_name in ('TB_ANALYZE01','TB_ANALYZE02','TB_ANALYZE03','TB_ANALYZE04','TB_ANALYZE05','TB_ANALYZE06'); TABLE_NAME INDEX_NAME BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS AVG_DATA_BLOCKS CLUSTERING_FACTOR NUM_ROWS ------------ ------------ ------ ----------- ------------- --------------- --------------- ----------------- -------- TB_ANALYZE01 PK_ANALYZE01 0 1 269 1 1 8 269 TB_ANALYZE02 PK_ANALYZE02 0 1 270 1 1 8 270 TB_ANALYZE03 PK_ANALYZE03 0 1 271 1 1 8 271 TB_ANALYZE04 PK_ANALYZE04 0 1 257 1 1 8 257 TB_ANALYZE05 PK_ANALYZE05 0 1 258 1 1 8 258 TB_ANALYZE06 PK_ANALYZE06 0 1 259 1 1 8 259 6 rows selected. |
可以看出统计信息已经发生变化
删除统计信息
SQL> analyze table TB_ANALYZE01 delete statistics; Table analyzed. |
查看统计信息
SQL> select table_name,num_rows,blocks,empty_blocks from user_tables where table_name='TB_ANALYZE01'; TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS ------------ -------- ---------- ------------ TB_ANALYZE01 SQL> select table_name,column_name,num_distinct,low_value,high_value,density from user_tab_columns where table_name='TB_ANALYZE01'; TABLE_NAME COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY ------------ ------------------ ------------ -------------------------------------- -------------------------------------- ---------- TB_ANALYZE01 OBJECT_NAME TB_ANALYZE01 SUBOBJECT_NAME TB_ANALYZE01 OBJECT_ID TB_ANALYZE01 DATA_OBJECT_ID TB_ANALYZE01 OBJECT_TYPE TB_ANALYZE01 CREATED TB_ANALYZE01 LAST_DDL_TIME TB_ANALYZE01 TIMESTAMP TB_ANALYZE01 STATUS TB_ANALYZE01 TEMPORARY TB_ANALYZE01 GENERATED TB_ANALYZE01 SECONDARY TB_ANALYZE01 NAMESPACE TB_ANALYZE01 EDITION_NAME TB_ANALYZE01 SHARING TB_ANALYZE01 EDITIONABLE TB_ANALYZE01 ORACLE_MAINTAINED TB_ANALYZE01 APPLICATION TB_ANALYZE01 DEFAULT_COLLATION TB_ANALYZE01 DUPLICATED TB_ANALYZE01 SHARDED TB_ANALYZE01 CREATED_APPID TB_ANALYZE01 CREATED_VSNID TB_ANALYZE01 MODIFIED_APPID TB_ANALYZE01 MODIFIED_VSNID 25 rows selected. SQL> select table_name,index_name,blevel,leaf_blocks,distinct_keys,avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key avg_data_blocks,clustering_factor,num_rows from user_indexes where table_name='TB_ANALYZE01'; TABLE_NAME INDEX_NAME BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS AVG_DATA_BLOCKS CLUSTERING_FACTOR NUM_ROWS ------------ ------------ ------ ----------- ------------- --------------- --------------- ----------------- -------- TB_ANALYZE01 PK_ANALYZE01 |
结论:当表的统计信息删除后对应的索引统计信息也会删除