2010-11-07 41 views

回答

8
USE master 

SELECT SUM(used_page_count) * 8 AS [Size in kb] 
FROM sys.indexes i 
JOIN sys.dm_db_partition_stats p ON p.object_id = i.object_id AND i.index_id = p.index_id 
WHERE i.object_id=OBJECT_ID('dbo.spt_values') AND i.name='ix2_spt_values_nu_nc' 
2

Find out the disk size of an index

SELECT 
    OBJECT_NAME(I.OBJECT_ID) AS TableName, 
    I.name AS IndexName, 
    8 * SUM(AU.used_pages) AS 'Index size (KB)', 
    CAST(8 * SUM(AU.used_pages)/1024.0 AS DECIMAL(18,2)) AS 'Index size (MB)' 
FROM 
    sys.indexes I 
    JOIN sys.partitions P ON P.OBJECT_ID = I.OBJECT_ID AND P.index_id = I.index_id 
    JOIN sys.allocation_units AU ON AU.container_id = P.partition_id 
WHERE 
    OBJECT_NAME(I.OBJECT_ID) = '<TableName>'  
GROUP BY 
    I.OBJECT_ID,  
    I.name 
ORDER BY 
    TableName 
+0

也許我錯過了一些東西,但表格屬性 - >存儲窗口顯示索引的空間分配不同於此腳本。 SQL Server 2012。 – cassandrad 2015-09-11 12:02:43

相關問題