Query Size of Tables in T-SQL

Useful command for SQL 2005 and above to see the size of each table in a given database:

USE databasename
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"

Using sysindexes and in MB:

USE databasename
SELECT object_name(id) AS [table_name], [table_size_in_mb] = convert (varchar, dpages * 8 / 1024) + ' MB'
FROM sysindexes
WHERE indid in (0,1)
ORDER BY dpages desc

For each file from master_files:

SELECT DB_NAME([database_id]) AS N'database_name',[name] AS N'logical_name'
,convert(varchar, size * 8 / 1024) + ' MB' as [file_size_in_mb],[physical_name]
FROM sys.master_files
order by database_name

Leave a Reply