如何查看数据库中所有表所占存储的大小

woshiyanliu 2015-08-21 11:50:56
假设我有一个数据库,里面有300表,如何通过一个sql语句或者其他什么操作查看我这300张表里面每个表所占存储的大小
...全文
226 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Haytor 2015-08-21
  • 打赏
  • 举报
回复
参考一下我的这个方案

DECLARE @Table TABLE(
name NVARCHAR(32),
rows INT,
reserved NVARCHAR(32),
data  NVARCHAR(32),
index_size  NVARCHAR(32),
unused  NVARCHAR(32)
)


INSERT @Table
EXEC SP_MSFOREACHTABLE 'exec sp_spaceused ''?'''


SELECT
	*
FROM 
	@Table 
--WHERE name IN ('表名')

天-笑 2015-08-21
  • 打赏
  • 举报
回复

with    t as (SELECT    o.name,
                        SUM(p.reserved_page_count * 8 / 1024) as reserved_size_MB,
                        SUM(p.used_page_count * 8 / 1024) as used_size_MB,
                        SUM(CASE WHEN (p.index_id < 2)
                                 THEN (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
                                 ELSE p.lob_used_page_count + p.row_overflow_used_page_count
                            END) * 8 / 1024 as Data_size_MB,
                        SUM(CASE WHEN (p.index_id < 2) THEN row_count
                                 ELSE 0
                            END) as rowCounts
              FROM      sys.dm_db_partition_stats p
              inner join sys.objects o on p.object_id = o.object_id
              group by  o.name
             )
     select name, reserved_size_MB, used_size_MB,
            (used_size_MB - Data_size_MB) as Index_size_MB, rowCounts
     from   t
     order by reserved_size_MB desc

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧