标题说明了一切。我在PLSQL中没有太多经验,需要弄清楚如何显示表列表,列数和行数。它最终会成为一种观点,但是如果你们至少可以通过单一的SELECT语句指引我朝着正确的方向发展,我会感到高兴!谢谢!
答案 0 :(得分:2)
试试这个。替换"所有_"与" dba _"如果您在数据库中有足够的权限。 all_前缀将显示当前用户只能访问的对象。 dba_显示了所有内容,但您需要有权访问它们。
select x.table_name, x.num_cols, y.num_rows
from (select table_name, count(*) as num_cols
from all_tab_cols
group by table_name) x
join (select table_name, num_rows from all_tables) y
on x.table_name = y.table_name
作为旁注,w /相对于行数,这将显示上次分析表时表上的行数。统计数据应保持最新,尤其是性能,但您应该知道计数不是“直播”。如果要更新表的统计信息,可以这样做:
analyze table table_name compute statistics;
您可以运行以下内容查看上次分析每个表的时间(我给您的查询基本上会显示截至该日期的每个表的行数。
select owner, table_name, last_analyzed from all_tables order by 3, 1, 2;