Oracle 统计每张表的数据行数

  1. 不要求准确

select t.table_name,t.num_rows from user_tables t;

 这种方式,说不准确,是因为他的分析,不是实时的,user_tables里有个字段,last_analyzed,上次分析时间。可能从上次分析完,已经修改了很多次了,但是他没有重新分析,那么数据量的统计,就是不准确的。

要获得一张表的数据量,从 user_tables中查 num_rows,使用count()函数。区别是,一个是估计,不准确,但是速度贼快;一个精确,但是速度慢,这就是第二种。

2. 要求准确

使用count 函数

3. 既然 user_tables 不准确是因为没有分析,那么我们可以手动执行分析。

analyze table  tablename  compute statistics;

执行语句,分析一张表,分析后,num_rows统计就准确了。

如果要查每张表的数量,可以批量生产 分析语句

select 'analyze table  '||table_Name||' compute statistics;'from user_TABLES;

例如user_tables有A,B,C,D表
上面的结果会有4条记录
analyze table  A    compute statistics;
analyze table  B    compute statistics;
analyze table  C    compute statistics;
analyze table  D    compute statistics;

生成分析语句后,执行这些分析语句,user_tables表里 num_rows 字段就可靠了。但是表多的话,这个分析语句的效率,还没有试过。可能没有count速度快,毕竟分析的话,就不只是count,可能还分析了其他方面的数据。

不知道还有没有其他办法,快速准确的统计每张表的数据量呢?

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值