oracle怎么把数据库表按照表大小排序

怎么按照表的数据量的大小排序,哪位大侠给个SQL语句啊谢谢了先... 怎么按照表的数据量的大小排序,哪位大侠给个SQL语句啊 谢谢了先 展开
 我来答
yjx_xiaoxin
推荐于2017-11-25 · TA获得超过6702个赞
知道大有可为答主
回答量:4618
采纳率:50%
帮助的人:2518万
展开全部
看你怎么理解数据量了,如果是按照表的行数
select table_name,blocks,num_rows
from dba_tables
where owner not like '%SYS%' and table_name not like '%$%'
order by num_rows desc;
如果是按照表占用的数据块排序
select table_name,blocks,blocks
from dba_tables
where owner not like '%SYS%' and table_name not like '%$%'
order by blocks desc;
上面的where条件是为了筛除系统表,不过写的并不详细,你可以根据自己的具体要求改写.
追问
select table_name,blocks,num_rows 
from dba_tables
where owner not like '%SYS%' and table_name not like '%$%'
order by num_rows desc;
我用这个方法看到了BUS_PURC_INVOICE这个表的num_rows 等于0,而我用
select count(*) from BUS_PURC_INVOICE却看到的是22,实际也是22条记录,这是怎么回事呢??
百度网友bfb9204
2012-04-23 · TA获得超过718个赞
知道小有建树答主
回答量:1008
采纳率:66%
帮助的人:447万
展开全部
这是我在sql2000裏面写的你可以测试ORACLE
declare @TBLName table (
tid int identity(1,1),
TBLName sysname
)
insert into @TBLName
select name
from dbo.sysobjects(nolock)
where type = 'U'
order by Name
循环执行
create table #CheckTableS (
[Name] nvarchar(50),
[Rows] char(20),
[reserved] varchar(20),
[Data] varchar(20),
[index_size] varchar(20),
[Unused] varchar(20)
)
insert into #CheckTableS
execute sp_spaceused 加上面 @TBLName裏面的表名

select *from #CheckTableS
就可以得到了
追问
“循环执行 ”下面的是什么啊?上面的那段代码,我在sqlserver2000里也可以用?

在oracle里面的按表的大小排序的sql代码是上面的可以吗?你试过了吗?我这暂时没有oracle数据库?

还有如何之将用户建的表按照表的大小排序呢???只是用户的表,不要系统的表,系统表混在用户表里表的数据太多了,我要看的是用户表,

谢谢了
追答
create table #CheckTableS (              
[Name] nvarchar(50),
[Rows] char(20),
[reserved] varchar(20),
[Data] varchar(20),
[index_size] varchar(20),
[Unused] varchar(20)
)
我这里没有写全 应该加个循环执行@TBLName裏面表
insert into #CheckTableS
execute sp_spaceused 加上面 @TBLName裏面的表名
上面的代码是在SQL2000的 可以用的,(只统计用户表,不统计系统表)
我没有ORACLE 数据库 你要求不是oracle怎么把数据库表按照表大小排序?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式