📜  sql server 列出表大小 - SQL (1)

📅  最后修改于: 2023-12-03 15:35:05.031000             🧑  作者: Mango

SQL Server 列出表大小

在 SQL Server 中,我们可以使用以下两种方式来列出表的大小:

  1. 使用系统存储过程 sp_spaceused

  2. 使用动态管理视图 sys.dm_db_partition_stats

1. 使用系统存储过程 sp_spaceused

sp_spaceused 存储过程返回有关一个表或视图占用的磁盘空间量的信息。它返回四个结果集:

  • 表或视图的名称、行数、列数、索引数量等基本信息
  • 数据表或视图占用的空间量
  • 表或视图索引占用的空间量
  • 表或视图未使用的空间量

以下代码示例演示如何使用 sp_spaceused 存储过程列出名为 MyTable 的表的大小:

EXEC sp_spaceused N'MyTable';

执行以上代码后,将返回以下结果(示例数据):

| 名称 | 行数 | 数据占用空间 | 索引占用空间 | 未使用空间 | | ---- | ------- | ------------ | ------------ | ----------- | | MyTable | 1000000 | 200 MB | 150 MB | 50 MB |

2. 使用动态管理视图 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 的两个索引(一个聚集索引和一个非聚集索引)的大小信息统计。

请根据自己的需要选择适合您的方式来列出表大小。