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

怎么按照表的数据量的大小排序,哪位大侠给个SQL语句啊 谢谢了先

看你怎么理解数据量了,如果是按照表的行数
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条记录,这是怎么回事呢??

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-23
这是我在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怎么把数据库表按照表大小排序?

oracle怎么把数据库表按照表大小排序
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条件是为了筛除系统表,不过写的并不详细,你可以根据自己的具体要求改写....

如何在oracle数据库里的所有表大小
select sum(bytes)\/1024\/1024\/1024 GB from dba_segments where segment_type='TABLE';

oracle有没有方法把数据库表中的字段的所有数据中的某个字母或数字修改...
update 表 set big=replace(big,'_b.png','_l.png')where 条件 这样?

怎样设计oracle数据库让插入的数据就是按顺序排列的???
普通的表不成,有一种表叫做索引组织表,索引和数据放在一起的。这种表可以实现你想要的功能。

如何修改Oracle数据库表中字段顺序
问题就是当设计好表结构之后,后期如果需要往表中增加字段,默认会把该字段放到表的最后,并且字段特别多而我们又想把有关联性的字段放在一起,这时就要修改字段顺序。在修改顺序之前,我们先来看看Oracle数据库表中如何增加字段。新增字段:添加字段的语法:alter table tablename add (column datatype [...

Oracle 访问数据库字段和表名有大小写区分吗?
Oracle数据库内部是区分大小写的。举例说明一下:create table t (id number) ;等价于 create table T (id number) ;以上两种情况下,表名不区分大小写,默认在数据字典中都是大写的T 但是如果使用如下的方式创建:create table "t" (id number) ;则,表名为小写。访问的时候必须使用双引号。sele...

怎么查看oracle数据库数据量大小?
要查看Oracle数据库的数据量大小,可以采取以下步骤。首先,了解所有表空间及其大小,可以使用SQL语句: `SELECT tablespace_name ,sum(bytes) \/ 1024 \/ 1024 as MB FROM dba_data_files GROUP BY tablespace_name;` 这个语句会将各个表空间的大小以MB为单位进行汇总展示。其次,若需查看每个表空间对应...

oracle数据库区分大小写吗?
oracle数据库区分大小写问题:oracle不是区分大小写的,比如:CREATE TABLE TableName(id number); 虽然写的时候是有大写和小写,但是在数据库里面是不区分的。select * from tablename; \/\/这样是可以的 SELECT * FROM TABLENAME; \/\/这样写也不会有问题 SELECT * FROM TableName; \/\/都没问题 CREAT...

ORACLE数据库,表TABLE中有 A,B,C 三个字段。要求根据A字段分多组取每组...
这个要用到子查询 子查询中以A分组,求出max(B),然后二者||,A||max(B) from table group by A 然后外层的条件就是A||B=上面的子查询 这就就可以得到以A最分组的每组中的最大值B对应的行了,只要select C就可以了。别问我为什么不写sql,因为写不了,写了就发不上来。

oracle 怎么把数据库中的表结构
分两种方法:1、在命令窗口通过如下语句:desc 表名;2、用语句:select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_cols where table_name='TEST';

相似回答