当前位置:   article > 正文

Oracle-查询用户下所有表的数据量_oracle 查询所有表数据量

oracle 查询所有表数据量

一般我们通过count()语句就可以查询单张标的数据量,但是遇到很多情况,查询多张表,数据量特别大的时候,就比较慢,耽搁时间,毕竟开发的时间还是很宝贵的;

也有通过下面的SQL去查询数据量,但不知道为什么,有的库可以查到,有的直接返回空,或许是权限问题吧,哪位大神可以解惑。

select t.table_name,t.num_rows from user_tables t

遇事,不得不创建个函数来查询,具体如下:

  1. create or replace function count_table_rows(table_name in varchar2,owner in varchar2 default null)
  2. return number authid current_user IS
  3. num_rows number;
  4. stmt varchar2(2000);
  5. begin
  6. if owner is null then
  7. stmt := 'select count(*) from "' || table_name || '"';
  8. else
  9. stmt := 'select count(*) from "' || owner || '"."' || table_name || '"';
  10. end if;
  11. execute immediate stmt
  12. into num_rows;
  13. return num_rows;
  14. -- Oracle 查询用户下所有表的记录数
  15. end;

接下来,只需要简单的查询就可以查询了:

  1. select table_name, count_table_rows(table_name) nrows
  2. from user_tables
  3. where table_name like 'AAA%'
  4. order by nrows desc

当然也可以进行sum()汇总等写法,可以自由发挥啦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/752493
推荐阅读
相关标签
  

闽ICP备14008679号