【Oracle SQL】列出当前表空间内表行数最多的十张表
SQL:
select * from ( select rownum as sn,a.* from ( select table_name,num_rows from user_tables where num_rows is not null order by num_rows desc ) a ) b where b.sn<11;
执行结果:
SQL> select * from 2 ( 3 select rownum as sn,a.* from 4 ( 5 select table_name,num_rows 6 from user_tables 7 where num_rows is not null 8 order by num_rows desc 9 ) a 10 ) b 11 where b.sn<11; SN TABLE_NAME NUM_ROWS ---------- ------------------------------ ---------- 1 EMP_TO1 10000000 2 EMP_FROM 10000000 3 EMP_TO8 10000000 4 EMP615_30 10000000 5 EMP_TO 10000000 6 EMP_30 10000000 7 EMP_TO_10 10000000 8 EMP_TEST 10000000 9 EMP67_30 6444381 10 EMP619 2000000 已选择10行。 SQL>
注意点:
如果显示与实际不符,是因为统计滞后的缘故,下面引用的短文说明了原因:
num_rows 是对表做 statistics analysis 后填充,表和索引的统计分析工作,在9i是要手工做的,10i是可以自动做的。但肯定要有延迟。dba_tables显示的表的记录数是对表进行分析以后才与表的真正记录数同步一次的 问: 有没有什么其他办法来实现让它及时同步呢? 答 在要统计的时候来一次同步 exec dbms_stats.gather_table_stats(OWNNAME =>'CSID', TABNAME => 'dba_extents',METHOD_OPT => 'FOR ALL');
以上这段文字来自:https://blog.csdn.net/whhitgen/article/details/8789781
END