查詢資料庫各個表的資料大小及資料量

2021-08-20 21:51:08 字數 2605 閱讀 9740

***begin查詢資料庫各個表裡的資料行數

先建立表

create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))

exec sp_msforeachtable "insert into #t exec sp_spaceused '?'"

後查各個表的資料大小

select * from #t         order by rows desc

二。

select  a.name as '表名',b.rows as '表資料行數'

from sysobjects a inner join sysindexes b

on a.id = b.id

where   a.type = 'u'

and b.indid in (0,1)

--and a.name not like 't%'

order by b.rows desc

三.利用sys.dm_db_partition_stats,sql命令如下:查詢行數,這個速度最快

select b.name,a.row_count from sys.dm_db_partition_stats a,

sys.objects b

where a.object_id=b.object_id 

and a.index_id<=1

and b.type='u'  order by  row_count 

sys.dm_db_partition_stats它返回當前資料庫中每個分割槽的頁和行計數資訊,在上面的sql中,三個關鍵列的意思如下:

object_id:表或者索引檢視的id,所以可以用它與sys.objects表的object_id相匹配。

row_count:該錶或索引檢視中資料的數量,就是我們要查詢的結果。

index_id:該錶或索引檢視的索引id。 如果該錶沒有索引,那麼會在sys.dm_db_partition_stats中存在一行index_id=0的記錄,如果有乙個聚集索引(而且乙個表中也只能有乙個聚集索引),那麼在sys.dm_db_partition_stats中存在一行index_id=1的記錄,而對應的index_id=0的記錄沒有了。如果這個表在sys.dm_db_partition_stats中存在多行index_id >1的記錄,則說明這個表存在多個非聚集索引,我們這裡判斷index_id<=1,是假定每個表都有主鍵,且主鍵為聚集索引。配合sys.objects表的type='u',就可以查出每個使用者表的資料數量了。

sys.dm_db_partition_stats其它行的資訊,大家可以查詢msdn幫助文件

四。查出各表大小及行數

set nocount on

create table #t1

(name varchar(200),

rows int,

reserved varchar(50),

data varchar(50),

index_size varchar(50),

unused varchar(50)

)declare @tablename varchar(200)

declare @sql varchar(2000)

declare m_cursor cursor local for select object_name(object_id) from sys.objects where type='u'

open m_cursor

fetch next from m_cursor into @tablename

while @@fetch_status=0

begin

set @sql='insert into #t1 exec sp_spaceused '+@tablename

exec(@sql)

fetch next from m_cursor into @tablename

endclose m_cursor

deallocate m_cursor

select * from #t1

drop table #t1

資料庫的大小查詢

1 進入information schema 資料庫 存放了其他的資料庫的資訊 use information schema 2 查詢所有資料的大小 select concat round sum data length 1024 1024 2 mb as data from tables 3 檢視...

如何檢視mysql資料庫中各個表的大小

由於資料太大了。所以mysql需要 那前提就是需要知道每個表占用的空間大小。首先開啟指定的資料庫 use information schema 如果想看指定資料庫中的資料表,可以用如下語句 select concat round sum data length 1024 1024 2 mb as d...

sql server 查詢資料庫表的大小語句

檢視ms sql server 資料庫中各表大小 sql 2009 05 23 18 12 這是一段檢視 ms sql server 2005 資料庫中各表大小 sql declare tablespaceinfo table nameinfo varchar 50 rowsinfo int res...