--你的那些表应该都是某个用户下的吧 select TABLE_NAME, SUM(NUM_ROWS) from all_tables where owner='SCOTT' GROUP BY TABLE_NAME
Columns ed with an asterisk (*) are populated only if you collect statistics on the table with the ANALYZE statement or the DBMS_STATS package. NUM_ROWS就是这种类型的,也就是说这个值取决于你是否分析过表,即使分析过,这个值也是分析时刻的数据.并不是一个实时数据
select table_name,sum(num_rows) from all_tables where table_name in('A','B','C'....) GROUP BY table_name
记得收集表的信息 analyze table tbname compute statistics
SELECT table_name,num_rows FROM All_Tables WHERE OWNER='YY0A' ORDER BY num_rows DESC;
通过分析表的方式是可行的。需要首先分析一,然后在user_tables视图中取值。 但是一个SQL语句是不能完成的!! 也可以写一个存储过程,然后将所有表统计后写入临时表。 如果仅仅为了查看每个表的数据量,可以生成一个脚本 select 'select count(*) from '||table_name||';' from user_tables where table_name in ('a','b'........) 然后复制脚本,批量执行就行了。
select table_name,num_rows from all_tables; 上面的句子就可以查出所有表中的每个表中有多少条记录数 比如:表名t_arg 记录数20000 正如这样,不知道你要的是不是这样的结果。
--你的那些表应该都是某个用户下的吧
select TABLE_NAME, SUM(NUM_ROWS) from all_tables where owner='SCOTT'
GROUP BY TABLE_NAME
NUM_ROWS就是这种类型的,也就是说这个值取决于你是否分析过表,即使分析过,这个值也是分析时刻的数据.并不是一个实时数据
select table_name,sum(num_rows) from all_tables where table_name in('A','B','C'....)
GROUP BY table_name
记得收集表的信息
analyze table tbname compute statistics
我想问的是
查到:num_rows 是number of records,但是3 楼 7楼中为什么会有:sum(num_rows)?还有: all_tables 在数据库中是视图, 源码中对应的是 sys.tab$.rowcnt 且没有别名, 那么在all_tables 中应该是rowcnt啊, 为什么会是:num_rows? 下面是:selecte × from all_tables where rownum<2 的前20个字段的字段名,但是在源代码中都没有,他们是怎么来的?OWNER
TABLE_NAME
TABLESPACE_NAME
CLUSTER_NAME
IOT_NAME
STATUS
PCT_FREE
PCT_USED
INI_TRANS
MAX_TRANS
INITIAL_EXTENT
NEXT_EXTENT
MIN_EXTENTS
MAX_EXTENTS
PCT_INCREASE
FREELISTS
FREELIST_GROUPS
LOGGING YES
BACKED_UP
NUM_ROWS
但是一个SQL语句是不能完成的!!
也可以写一个存储过程,然后将所有表统计后写入临时表。
如果仅仅为了查看每个表的数据量,可以生成一个脚本
select 'select count(*) from '||table_name||';' from user_tables where table_name in ('a','b'........)
然后复制脚本,批量执行就行了。
上面的句子就可以查出所有表中的每个表中有多少条记录数
比如:表名t_arg 记录数20000
正如这样,不知道你要的是不是这样的结果。