-- ÀÏ¹Ý À妽º Å©±â Á¶»ç DECLARE @OBJECT_NAME VARCHAR(255) = 'ColumnstoreTable'; DECLARE @temp TABLE ( indexID BIGINT, objectId BIGINT, index_name NVARCHAR(MAX), used_page_count BIGINT, pages BIGINT ) --Insert into temp table INSERT INTO @temp SELECT P.index_id, P.OBJECT_ID , I.name, SUM (used_page_count), SUM ( CASE WHEN (p.index_id < 2) THEN (in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count) ELSE lob_used_page_count + row_overflow_used_page_count END) FROM sys.dm_db_partition_stats P INNER JOIN sys.indexes I ON I.index_id = P.index_id AND I.OBJECT_ID = P.OBJECT_ID WHERE p.OBJECT_ID = OBJECT_ID(@OBJECT_NAME) GROUP BY P.index_id, I.Name, P.OBJECT_ID; -- ÀÏ¹Ý À妽º Å©±â Á¶È¸ SELECT index_name INDEX_NAME, LTRIM (STR ((CASE WHEN used_page_count > pages THEN (used_page_count - pages) ELSE 0 END) * 8 / 1024.0, 15, 0) + ' MB') INDEX_SIZE FROM @temp T -- columnstore index Å©±â Á¶È¸ SELECT SUM(on_disk_size_MB) AS TotalSizeInMB FROM ( (SELECT SUM(css.on_disk_size)/(1024*1024) on_disk_size_MB FROM sys.indexes AS i JOIN sys.partitions AS p ON i.object_id = p.object_id JOIN sys.column_store_segments AS css ON css.hobt_id = p.hobt_id WHERE i.object_id = object_id(@OBJECT_NAME) AND i.type_desc = 'NONCLUSTERED COLUMNSTORE') UNION ALL (SELECT SUM(csd.on_disk_size)/(1024*1024) on_disk_size_MB FROM sys.indexes AS i JOIN sys.partitions AS p ON i.object_id = p.object_id JOIN sys.column_store_dictionaries AS csd ON csd.hobt_id = p.hobt_id WHERE i.object_id = object_id(@OBJECT_NAME) AND i.type_desc = 'NONCLUSTERED COLUMNSTORE') ) AS SegmentsPlusDictionary -- Ãâó : http://blog.sqlauthority.com/2009/11/30/sql-server-size-of-index-table-for-each-index-solution/ http://msdn.microsoft.com/en-us/library/gg509105(v=SQL.110).aspx http://msdn.microsoft.com/en-us/library/gg492088(v=SQL.110).aspx