哪位大虾写过这样的查询语句?--查询某表空间内,所有表的大小,并按大小列出来

网络科技 2015-05-02 07:23:49
思路是有,但水平有限,用得也不熟,还是写不出来。
查询某用户所有表的名称可用:select table_name from user_tables;
查询单表大小的写法:select sum(bytes)/(1024*1024) as "size(M)" from user_segments
  where segment_name=upper('表名');

但怎么整合,连起来写,并按大小排序列出,一时想不出,请各位大虾指教,多谢。
...全文
116 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2015-05-03
  • 打赏
  • 举报
回复


select t.table_name , x."size(MB)"
from user_tables t left join 
(select segment_name , sum(bytes) / 1024 / 1024 As "size(MB)"
from user_segments
group by segment_name ) x 
on t.table_name = x.segment_name
order by 2 desc ;   -- 用这个排序。


网络科技 2015-05-03
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:


select t.table_name , x."size(MB)"
from user_tables t left join 
(select segment_name , sum(bytes) / 1024 / 1024 As "size(MB)"
from user_segments
group by segment_name ) x 
on t.table_name = x.segment_name
order by 2 desc ;   -- 用这个排序。
正解,学习了
卖水果的net 2015-05-03
  • 打赏
  • 举报
回复


-- 如果没有 LOB 字段的话,可以简单的使用下面的方法
SQL> select t.table_name , x."size(MB)"
  2  from user_tables t left join
  3  (select segment_name , sum(bytes) / 1024 / 1024 As "size(MB)"
  4  from user_segments
  5  group by segment_name ) x
  6  on t.table_name = x.segment_name ;

TABLE_NAME                       size(MB)
------------------------------ ----------
A1                                  .0625
A2                                  .0625

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧