首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

dbms_stats跟analyze 评估AVG_ROW_LEN

2012-09-24 
dbms_stats和analyze 评估AVG_ROW_LEN随着Oracle版本的不断更新,我们推荐使用dbms_stats来代替analyze获得

dbms_stats和analyze 评估AVG_ROW_LEN
随着Oracle版本的不断更新,我们推荐使用dbms_stats来代替analyze获得对象的统计信息。本文主要讨论dbms_stats和analyze对AVG_ROW_LEN取值的异同
创建测试表格
引用SQL> create table testt1 as select * from dba_objects;
SQL> insert into testt1 select * from testt1;
SQL> commit;
SQL> insert into testt1 select * from testt1;
SQL> commit;
SQL> select count(*) from testt1;
    181860
用dbms_stats收集表格信息,可以发现AVG_ROW_LEN*NUM_ROWS小于表格实际物理大小
引用SQL> exec dbms_stats.gather_table_stats('ZHOU','TESTT1');


SQL> select AVG_ROW_LEN,NUM_ROWS from dba_tables where table_name='TESTT1';
         94     181860
SQL> select bytes from dba_segments where segment_name='TESTT1';
  20971520
SQL> select 94*181860 from dual;
  17094840
用analyze命令收集表格信息,我们发现AVG_ROW_LEN*NUM_ROWS比dbms_stats更接近于实际物理大小,不过这差别并不会对CBO构成致命影响
引用SQL> analyze table TESTT1 compute statistics;
SQL> select AVG_ROW_LEN,NUM_ROWS from dba_tables where table_name='TESTT1';
         97     181860
SQL> select 97*181860 from dual;
  17640420

热点排行