ORACLE9I
使用如下语句查询
select table_name,num_rows from user_tables where num_rows>150000
order by num_rows desc
返回结果中的一条信息如下:
1 IF_FEEINFO 2523247但是使用如下语句查询
select count(*) from IF_FEEINFO返回结果如下:7047802两项返回相差400多万条记录由于是新接手的项目,不敢随意乱动,我想请问一下大家
不一致是正常的吗?不正常是什么原因造成的,是否对数据库产生影响,应该如何处理?
以哪里的数据为准(个人认为COUNT(*)的数据应该是准确的)
使用如下语句查询
select table_name,num_rows from user_tables where num_rows>150000
order by num_rows desc
返回结果中的一条信息如下:
1 IF_FEEINFO 2523247但是使用如下语句查询
select count(*) from IF_FEEINFO返回结果如下:7047802两项返回相差400多万条记录由于是新接手的项目,不敢随意乱动,我想请问一下大家
不一致是正常的吗?不正常是什么原因造成的,是否对数据库产生影响,应该如何处理?
以哪里的数据为准(个人认为COUNT(*)的数据应该是准确的)
analyze table tab_name estimate statistics;
再
select t.TABLE_NAME,t.NUM_ROWS from user_tables t
或以select count(*) from tab_name;为准
你应该是没去搜吧~~
看看这个帖子
http://blog.chinaunix.net/u2/60332/showart_495441.html
高水位线应该是最高值而不可能是低于700万的值
根据英文资料:
but it's base on your table analysis strategy,may be not accurate
select 'analyze table '||S.TABLE_NAME||' compute statistics;' from user_tables s;翻译如下:
但是它是基于你的表分析策略,由于时间的关系,可能已经不准确了。
如果你要准确,可以
select 'analyze table '||S.TABLE_NAME||' compute statistics;' from user_tables s;
后的所有脚本,再运行统计行数。也就是USER_TABLES中存储的是上一次分析之后的值,而不是准确值.