如何计算表的总行大小

时间:2018-09-19 05:18:43

标签: sql sql-server

如何计算表格的大小。

示例:

CREATE TABLE EMPLOYEE_INFO
(
EMP_ID INT,
EMP_FNAME VARCHAR (30),
EMP_LNAME VARCHAR (40),
EMP_CNTRY CHAR(40),
EMP_Age tintyint,
EMP_SAL BIGINT
)

1 个答案:

答案 0 :(得分:0)

尝试运行此查询将获得数据库中存在的所有表的大小

with SpaceInfo(ObjectId, IndexId, TableName, IndexName
    ,Rows, TotalSpaceMB, UsedSpaceMB)
as
( 
    select  
        t.object_id as [ObjectId]
        ,i.index_id as [IndexId]
        ,s.name + '.' + t.Name as [TableName]
        ,i.name as [Index Name]
        ,sum(p.[Rows]) as [Rows]
        ,sum(au.total_pages) * 8 / 1024 as [Total Space MB]
        ,sum(au.used_pages) * 8 / 1024 as [Used Space MB]
    from    
        sys.tables t with (nolock) join 
            sys.schemas s with (nolock) on 
                s.schema_id = t.schema_id
            join sys.indexes i with (nolock) on 
                t.object_id = i.object_id
            join sys.partitions p with (nolock) on 
                i.object_id = p.object_id and 
                i.index_id = p.index_id
            cross apply
            (
                select 
                    sum(a.total_pages) as total_pages
                    ,sum(a.used_pages) as used_pages
                from sys.allocation_units a with (nolock)
                where p.partition_id = a.container_id 
            ) au
    where   
        i.object_id > 255 AND  t.name not LIKE'%HSt%'
    group by
        t.object_id, i.index_id, s.name, t.name, i.name
)
select 
    ObjectId, IndexId, TableName, IndexName
    ,Rows, TotalSpaceMB, UsedSpaceMB
    ,TotalSpaceMB - UsedSpaceMB as [ReservedSpaceMB]
from 
    SpaceInfo       
order by
    TotalSpaceMB desc
option (recompile)