Here's a script to tell you how big your table(s) are, subtotaled by indexes, with a grand total. Includes LOBs, and excludes dropped pages.
SELECT CASE WHEN GROUPING(t.name) = 0 THEN t.name ELSE 'GRAND TOTAL' END AS 'Table Name' , CASE WHEN GROUPING(i.name) = 0 THEN i.name ELSE 'TABLE TOTAL' END AS 'Index Name' , SUM(au.total_pages) * 8 / 1024 AS 'Allocated MB' , SUM(au.used_pages) * 8 / 1024 AS 'Used MB' FROM sys.allocation_units au LEFT JOIN sys.partitions pHobt ON au.container_id = pHobt.hobt_id AND (au.type_desc = 'IN_ROW_DATA' OR au.type_desc = 'ROW_OVERFLOW_DATA') LEFT JOIN sys.partitions pLob ON au.container_id = pLob.partition_id AND au.type_desc = 'LOB_DATA' JOIN sys.indexes i ON (i.object_id = pHobt.object_id AND i.index_id = pHobt.index_id) OR (i.object_id = pLob.object_id AND i.index_id = pLob.index_id) JOIN sys.tables t ON i.object_id = t.object_id WHERE au.type_desc != 'DROPPED' AND t.type_desc = 'USER_TABLE' AND COALESCE(pHobt.rows, pLob.rows, 0) > 0 AND t.name LIKE '%MyTable%' GROUP BY ROLLUP(t.name, i.name) ORDER BY t.name, i.name
0 comments:
Post a Comment