dbms_stats和analyze 评估AVG_ROW_LEN

随着Oracle版本的不断更新,我们推荐使用dbms_stats来代替analyze获得对象的统计信息。本文主要讨论dbms_stats和analyze对AVG_ROW_LEN取值的异同
创建测试表格
[quote]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[/quote]
用dbms_stats收集表格信息,可以发现AVG_ROW_LEN*NUM_ROWS小于表格实际物理大小
[quote]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[/quote]
用analyze命令收集表格信息,我们发现AVG_ROW_LEN*NUM_ROWS比dbms_stats更接近于实际物理大小,[color=red]不过这差别并不会对CBO构成致命影响[/color]
[quote]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[/quote]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值