dba_tables表中的num_rows与count(*)的值为何不同
2013-04-11 18:55
567 查看
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';
返回值为空,可见千万级别的表是不需要分区的。
如在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';
返回值为空,可见千万级别的表是不需要分区的。
相关文章推荐
- num_rows和count(*)的值为何不同?
- 解决统计表行数与All_Tables(Dba_Tables)对应表的Num_Rows不一致的问题
- php 对比count(*), mysql_num_rows
- mysql_num_rows VS COUNT 效率问题分析
- mysql_num_rows($result)和select count()的区别
- php中mysql_num_rows与count(*)的效率对
- mysqli_affected_rows 与 mysqli_num_rows的不同之处
- MySQL count(”欄位”) vs mysql_num_rows 速度?
- 用 DataSet.Tables[0].Rows.count 判断数据集是否有数据,防止出错
- mysql_num_rows VS COUNT 效率问题分析
- get all rows count of all tables in a mysql database.
- mysql_num_rows VS COUNT 效率问题分析
- dba_segments和dba_tables的不同
- Tables[0].Rows.count是什么意思
- php的数据库函数中mysql_fetch_row、mysql_affected_rows、mysql_num_rows的区别
- ORA-30926: unable to get a stable set of rows in the source tables
- C#中调用DateTime.Parse(ds.Tables[0].Rows[0]["WorkDay"].ToString())不能转换
- PHP mysql_num_rows() 函数,统计数据库行目
- [MySQL FAQ]系列 -- 为何innodb表select count(*)很慢
- BatchedTooManyRowsAffectedException Batch update returned unexpected row count异常问题