天天看点

oracle分析表

Oracle分析表资料。

  1、分析SQL:

  analyze table tablename compute statistics

  等同于 analyze table tablename compute statistics for table for all indexes for all columns

  for table的统计信息存在于视图:user_tables 、all_tables、dba_tables

  for all indexes的统计信息存在于视图: user_indexes 、all_indexes、dba_indexes

  for all columns的统计信息存在于试图:user_tab_columns、all_tab_columns、dba_tab_columns

  删除分析SQL:

  analyze table tablename delete statistics 会删除所有的statistics

  2、Oracle分析表的作用:为了使基于CBO的执行计划更加准确

  DBA_tables的数据有变化,可做对比。详见官方文档:

  Use the ANALYZE statement to collect non-optimizer statistics, for example, to:

  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.

  dbms_stats的作用主要是替代analyze的收集统计信息这一块的功能,且在这一方面做了相当大程度上的增强。

  以analyze table table_name compute statistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下select * from user_tables where table_name=‘table_name’;

  观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列就会明白,这就是变化。

使用了分析表分析之后结果会保存,以后再查询的的时候可以根据那些保存了的字段直接统计出来所需要的信息,减少了执行时间