sqlserver 查看表所占磁盘空间

方法1:
可以通过SP_SPACEUSED来查看

sp_spaceused

显示行数、保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。

语法

sp_spaceused [[@objname =] \'objname\'] [,[@updateusage =] \'updateusage\']

参数

[@objname =] \'objname\'

是为其请求空间使用信息(保留和已分配的空间)的表名。objname 的数据类型是 nvarchar(776),默认设置为 NULL。

[@updateusage =] \'updateusage\'

表示应在数据库内(未指定 objname 时)还是在特定的对象上(指定 objname 时)运行DBCC UP......

比如要查询部门表的大小,象下面这样查询就可以了:

sp_spaceused 部门表

结果如下:

表名          行数       保留             空间           数据空间        索引空间 未用空间
--------------------------------------------------------------------------------------
部门表    10040       520 KB        480 KB       16 KB             24 KB         834 KB

方法2:
此方法可以一次性查看所有表所占空间
CREATE TABLE tb_SpaceInfoTable
(
   ID int identity(1,1),
   name sysname,
   rows char(11),
   reserved varchar(18),
   data varchar(18),
   index_size varchar(18),
   unused varchar(18)
)
GO

EXEC SP_MSFOREACHTABLE
@COMMAND1 = 'INSERT INTO tb_SpaceInfoTable(name,
                                           rows,
                                           reserved,
                                           data,
                                           index_size,
                                           unused)
              EXEC SP_SPACEUSED ''?'''
GO

SELECT * FROM tb_SpaceInfoTable order by cast(replace(data,' KB','') as decimal(28,0)) desc
GO

 

----------------最简单的方法--------------
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 cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值