如何查看SQL2000数据库中所有表的数据量大小

如何查看SQL2000数据库中所有表的数据量大小,第1张

直接在查询分析器运行即可:

declare @id int

declare @type character(2)

declare @pages

int

declare @dbname sysname

declare @dbsize dec(15,0)

declare @bytesperpage dec(15,0)

declare @pagesperMB dec(15,0)

create table #spt_space

(

objid int null,

rows int null,

reserved dec(15) null,

data dec(15) null,

indexp dec(15) null,

unused dec(15) null

)

set nocount on

-- Create a cursor to loop through the user tables

declare c_tables cursor for

select id

from sysobjects

where xtype = 'U'

open c_tables

fetch next from c_tables

into @id

while @@fetch_status = 0

begin

/ Code from sp_spaceused /

insert into #spt_space (objid, reserved)

select objid = @id, sum(reserved)

from sysindexes

where indid in (0, 1, 255)

and id = @id

select @pages = sum(dpages)

from sysindexes

where indid < 2

and id = @id

select @pages = @pages + isnull(sum(used), 0)

from sysindexes

where indid = 255

and id = @id

update #spt_space

set data = @pages

where objid = @id

/ index: sum(used) where indid in (0, 1, 255) - data /

update #spt_space

set indexp = (select sum(used)

from sysindexes

where indid in (0, 1, 255)

and id = @id)

- data

where objid = @id

/ unused: sum(reserved) - sum(used) where indid in (0, 1, 255) /

update #spt_space

set unused = reserved

- (select sum(used)

from sysindexes

where indid in (0, 1, 255)

and id = @id)

where objid = @id

update #spt_space

set rows = irows

from sysindexes i

where iindid < 2

and iid = @id

and objid = @id

fetch next from c_tables

into @id

end

select TableName = (select left(name,60) from sysobjects where id = objid),

Rows = convert(char(11), rows),

ReservedKB = ltrim(str(reserved dlow / 1024,15,0) + ' ' + 'KB'),

DataKB = ltrim(str(data dlow / 1024,15,0) + ' ' + 'KB'),

IndexSizeKB = ltrim(str(indexp dlow / 1024,15,0) + ' ' + 'KB'),

UnusedKB = ltrim(str(unused dlow / 1024,15,0) + ' ' + 'KB')

from #spt_space, masterdbospt_values d

where dnumber = 1

and dtype = 'E'

order by reserved desc

drop table #spt_space

close c_tables

deallocate c_tables

优化sql有很多方法,除了楼上补充的,一些,还有索引的使用,select

column

查询列的选择等

你补充下需要实现一个怎么样的查询,用到些什么关联条件,以及业务查询sql的执行计划

还有就是两个表的建表语句,以及数据量分别多少

楼上的大哥人家没说一定是SQL Server数据库吧聚集索引是SQL Server的概念 1楼有一点说对了创建索引是可以优先考虑的选择,但是,并不是索引就一定会加快查询速度的另外,索引是很消耗磁盘空间的,这点也需要考虑清楚 主流的数据库,在建表的时候就规定了主键和外键的话,那么对应的主键和外键会自动加索引的 另外SQL语句的好坏可能会造成数倍的查询速度的差别写SQL的时候有二个基本的原则, 一越接近数据库核心的SQL语句查询速度越快即:用通用的标准SQL函数或语法,一定会比数据库产品扩展的SQL要快大约80%所有 二优先使用子查询而不是关联查询,比如表关联(即FROM后面有多个表) SQL语句也是可以优化的

--查询所有用户定义表

select  from sysobjects Where type='U' And type_desc='USER_TABLE'

--用户定义表个数

select Count(0) as '用户定义表的个数' from sysobjects Where type='U' And type_desc='USER_TABLE'

sysobject是系统表,记录用户创建了哪些对象,这个表里会存:表、索引、存储过程、函数

不过sysobject只有08及其以后的版本才支持,05及以前的版本都是用的Sysobjects

名字差不多,性质一样

查数据库ProjectsA中的表数量写上完全限定名就好了

ProjectsAsyssysobjects,其他的和之前一样

select  from ProjectsAsyssysobjects Where type='U' And type_desc='USER_TABLE'

select Count(0) from ProjectsAsyssysobjects Where type='U' And type_desc='USER_TABLE'

至于status的作用,看这里

>

在oracle10g中统计所有表的数据量可以使用如下语句:

select

sum(NUM_ROWS)

from

dba_tables

where

owner

like

'SCHEMA';

说明一下,以上语句必须用dba账户登录才可以使用,其中的SCHEMA参数就是当前用户名。

chema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables,

views,

sequences,

stored

procedures,

synonyms,

indexes,

clusters,

and

database

links。

一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。

最简单的理解:以你计算机的用户为例,如果你的计算机有3个用户,那么每个用户登录系统看到的(使用的)功能是可以不相同的!

查看方法:

1、查看所有表空间及表空间大小:

select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;

2、查看所有表空间对应的数据文件:

select tablespace_name,file_name from dba_data_files;

3、修改数据文件大小:

alter database datafile 'H:\ORACLE\PRODUCT\1010\ORADATA\ORACLE\USERS01DBF' RESIZE 10240M;

扩展资料

每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。

段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。

sql:SELECT segment_name AS TABLENAME,BYTES FROM user_segments WHERE segment_name='表名'。

解释:

segment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。

参考资料

csdn:怎么查看oracle数据库大小

以上就是关于如何查看SQL2000数据库中所有表的数据量大小全部的内容,包括:如何查看SQL2000数据库中所有表的数据量大小、数据库中数据量的是什么概念啊、如何查询数据库中大批量数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10183556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存