Friday, 3 January 2014

Get physical size and rowcount of all tables in database

The following script will return table name and corresponding physical size and rowcount for each table in a database:
select
    t.NAME as TableName

    ,s.Name as SchemaName
    ,p.rows as RowCounts
    ,sum(a.total_pages) * 8 as TotalSpaceKB
    ,sum(a.used_pages) * 8 as UsedSpaceKB
    ,(sum(a.total_pages) - sum(a.used_pages)) * 8 as UnusedSpaceKB
from
    sys.tables t

    inner join sys.indexes i
       on t.OBJECT_ID = i.object_id
    inner join sys.partitions p
       on i.object_id = p.OBJECT_ID
       and i.index_id = p.index_id
    inner join sys.allocation_units a
       on p.partition_id = a.container_id
    left outer join sys.schemas s
       on t.schema_id = s.schema_id
where
    t.NAME not like 'dt%'

    and t.is_ms_shipped = 0
    and i.OBJECT_ID > 255
group by
    t.Name,
    s.Name,
    p.Rows
order by
    t.Name

Credit: http://stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database

No comments:

Post a Comment

Updating massive amount of rows whilst avoiding blocking

The following SQL is a good means to split an update on a massive table into smaller chunks, whilst reducing blocking. The method is to upda...