dba_tables表中的num_rows与count(*)的值为何不同

dba_tables表中的一行为NUM_ROWS数值为何不与该表用SELECT COUNT(*)得到的行数一样?
如在dba_tables表中有一行table_name为gang,其相应字段num_ROWS数值为39326,但我用 select count(*) from gang得到的行数为39328行,按理说后者应该是对的,为何具体表中的行数与系统表中保存相应表的行数不同步? 
答:
num_rows 是对表做 statistics analysis 后填充,表和索引的统计分析工作,在9i是要手工做的,10i是可以自动做的。但肯定要有延迟。dba_tables显示的表的记录数是对表进行分析以后才与表的真正记录数同步一次的
问:
有没有什么其他办法来实现让它及时同步呢?

在要统计的时候来一次同步

exec dbms_stats.gather_table_stats(OWNNAME =>'CSID', TABNAME => 'dba_extents',METHOD_OPT => 'FOR ALL');

http://blog.sina.com.cn/s/blog_713978a50100rccd.html

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

SELECT num_rows FROM dba_tables WHERE table_name ='MTL_SYSTEM_ITEMS_B';

SELECT COUNT(*) FROM inv.mtl_system_items_b;

 

原来物料这么多,竟然有5千4百万多条。

 

SELECT * FROM dba_tab_partitions WHERE table_name ='MTL_SYSTEM_ITEM_B';

返回值为空,可见千万级别的表是不需要分区的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值