如何查看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

应该只有Access有这方面的限制,因为他是文件型的关系式数据库

Access 的 mdb 格式数据库,单表的记录上限没有规定,但是单个MDB 数据库的文件体积不得超过 2G,但是由于可以使用链接表以及 UNION ALL 查询,理论上记录没有上限。ACCESS 的最大理论并发用户是 255

其他的数据库 只受存储资源限制。至少在百万级记录上都没问题,只是性能会差点,

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

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存