📅  最后修改于: 2023-12-03 15:35:05.031000             🧑  作者: Mango
在 SQL Server 中,我们可以使用以下两种方式来列出表的大小:
使用系统存储过程 sp_spaceused
使用动态管理视图 sys.dm_db_partition_stats
sp_spaceused
sp_spaceused
存储过程返回有关一个表或视图占用的磁盘空间量的信息。它返回四个结果集:
以下代码示例演示如何使用 sp_spaceused
存储过程列出名为 MyTable
的表的大小:
EXEC sp_spaceused N'MyTable';
执行以上代码后,将返回以下结果(示例数据):
| 名称 | 行数 | 数据占用空间 | 索引占用空间 | 未使用空间 | | ---- | ------- | ------------ | ------------ | ----------- | | MyTable | 1000000 | 200 MB | 150 MB | 50 MB |
sys.dm_db_partition_stats
sys.dm_db_partition_stats
动态管理视图返回有关数据库表分区或索引分区的存储统计信息。它包含有关一个分区或分区表的每个分区的行数、空间使用量和索引统计信息。
以下代码示例演示如何使用 sys.dm_db_partition_stats
动态管理视图列出名为 MyTable
的表的大小:
SELECT
OBJECT_NAME(a.object_id) AS TableName,
a.index_id AS IndexID,
SUM(a.used_page_count) * 8 AS UsedSpaceKB,
SUM(a.total_page_count) * 8 AS TotalSpaceKB,
SUM(a.total_page_count - a.used_page_count) * 8 AS UnusedSpaceKB
FROM sys.dm_db_partition_stats a
WHERE a.object_id = OBJECT_ID('MyTable')
GROUP BY a.object_id, a.index_id;
执行以上代码后,将返回以下结果(示例数据):
| 表名 | 索引ID | 使用空间(KB) | 总空间(KB) | 未使用空间(KB) | | -------- | ------ | -------------- | ------------ | ---------------- | | MyTable | 0 | 204800 | 256000 | 51200 | | MyTable | 1 | 153600 | 204800 | 51200 |
以上示例代码将返回表 MyTable
的两个索引(一个聚集索引和一个非聚集索引)的大小信息统计。
请根据自己的需要选择适合您的方式来列出表大小。