SQL Server的单个索引大小

时间:2010-09-20 06:24:24

标签: sql sql-server

我可以使用sp_spaceused tablename来获取该表的总索引大小。 但有没有办法单独获取该表大小的所有索引?

1 个答案:

答案 0 :(得分:5)

table-and-index-size-in-sql-server

以下脚本是从Rob Garisson的上述答案中复制的

SELECT
    i.name                  AS IndexName,
    s.used_page_count * 8   AS IndexSizeKB
FROM sys.dm_db_partition_stats  AS s 
JOIN sys.indexes                AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
WHERE s.[object_id] = object_id('dbo.TableName')
ORDER BY i.name

SELECT
    i.name              AS IndexName,
    SUM(page_count * 8) AS IndexSizeKB
FROM sys.dm_db_index_physical_stats(
    db_id(), object_id('dbo.TableName'), NULL, NULL, 'DETAILED') AS s
JOIN sys.indexes AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
GROUP BY i.name
ORDER BY i.name