展开全部
看你怎么理解数据量了,如果是按照表的行数
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;
如果是按照表占用的数据块排序
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条记录,这是怎么回事呢??
展开全部
这是我在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
就可以得到了
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怎么把数据库表按照表大小排序?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询