如题,想统计一个用户名下,所有表的记录总条数,有什么语句能实现的?
Select Count(*) from tablename ,太慢了。
有什么即快又好的方法?

解决方案 »

  1.   

    不是太准,但最快,最好是刚GATHER过。
    SELECT sum(num_rows) FROM user_tables;
      

  2.   

    憋出个方法来,也不是很快,准确度应该有保证的。
    就是把那个用户下所有的表导出来,看导出的记录信息。
    exp一下,还有别的方法吗?
      

  3.   

    写个存储过程吧
    decare name var(20)
    SELECT table_name as name FROM dba_tables WHERE owner = 'username';
    sum(select count(*) from $table_name)大概就是这样,应该是要用到游标,可惜我不熟,看有仁兄来不全不
      

  4.   

    笨办法
    declare
    v_count number(10);
    t_count number(10) default 0;
    cursor t_cur is
    select table_name
    from user_tables;
    begin
    for t_rec in t_cur
    loop
    execute immediate 'select count(*) from '||t_rec.table_name||' into v_count';
    t_count:=v_count+t_count;
    end loop;
    dbms_output.put_line(to_char(t_count));
    end;