查询 SQL Server 数据库中每个表的内存占用情况,按占用空间从大到小排序,并以 MB 为单位显示空间占用量。
SELECT
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
CONVERT(decimal(18,2), SUM(a.total_pages) * 8.0 / 1024) AS TotalSpaceMB,
CONVERT(decimal(18,2), SUM(a.used_pages) * 8.0 / 1024) AS UsedSpaceMB,
CONVERT(decimal(18,2), (SUM(a.total_pages) - SUM(a.used_pages)) * 8.0 / 1024) AS UnusedSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
GROUP BY
t.NAME, s.Name, p.Rows
ORDER BY
TotalSpaceMB DESC;
这个查询会以 MB 为单位显示每个表的总空间、已使用空间和未使用空间,并按照总空间从大到小排序。