sql 获取数据库中表使用的空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 获取数据库中表使用的空间相关的知识,希望对你有一定的参考价值。

SELECT 
 t.NAME AS TableName,
 i.name AS indexName,
 SUM(p.rows) AS RowCounts,
 SUM(a.total_pages) AS TotalPages, 
 SUM(a.used_pages) AS UsedPages, 
 SUM(a.data_pages) AS DataPages,
 (SUM(a.total_pages) * 8) / 1024 AS TotalSpaceMB, 
 (SUM(a.used_pages) * 8) / 1024 AS UsedSpaceMB, 
 (SUM(a.data_pages) * 8) / 1024 AS DataSpaceMB
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
WHERE 
 t.NAME NOT LIKE 'dt%' AND
 i.OBJECT_ID > 255 AND  
 i.index_id <= 1
GROUP BY 
 t.NAME, i.object_id, i.index_id, i.name 
ORDER BY 
 OBJECT_NAME(i.object_id) 

以上是关于sql 获取数据库中表使用的空间的主要内容,如果未能解决你的问题,请参考以下文章

获取所有数据库中表的行数

Oracle中分区表中表空间属性

dba_data_files 中表空间名 dba_free_space查不到

根据 SQL Server 2008R2 中表中的列获取计数

根据 SQL Server 中表中的列值从两个表中获取一个新表:

SQL - 确保在一组关键密钥对中表示的两个实体都存在于最终数据集中的有效方法