zoukankan      html  css  js  c++  java
  • SQLServer查看各个表大小

    declare @id int  
    declare @type character(2)  
    declare @pages  
    int  
    declare @dbname sysname 
    declare @dbsize dec(15,0) 
    declare @bytesperpage dec(15,0) 
    declare @pagesperMB dec(15,0) 
     
    create table #spt_space 
    ( 
      objid int null, 
      rows int null, 
      reserved dec(15) null, 
      data dec(15) null, 
      indexp dec(15) null, 
      unused dec(15) null 
    ) 
     
    set nocount on 
     
    -- Create a cursor to loop through the user   tables 
    declare c_tables cursor for 
    select id 
    from sysobjects 
    where xtype = 'U' 
     
    open c_tables 
     
    fetch next from c_tables 
    into @id 
     
    while @@fetch_status = 0 
    begin 
     
      /* Code from sp_spaceused */ 
      insert into #spt_space (objid, reserved) 
      select objid = @id, sum(reserved) 
      from sysindexes 
      where indid in (0, 1, 255) 
      and id = @id 
     
      select @pages = sum(dpages) 
      from sysindexes 
      where indid < 2 
      and id = @id 
      select @pages = @pages + isnull(sum(used), 0) 
      from sysindexes 
      where indid = 255 
      and id = @id 
      update #spt_space 
      set data = @pages 
      where objid = @id 
     
     
      /* index: sum(used) where indid in (0, 1, 255) - data */ 
      update #spt_space 
      set indexp = (select sum(used) 
      from sysindexes 
      where indid in (0, 1, 255) 
      and id = @id) 
        - data 
      where objid = @id 
     
      /* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */ 
      update #spt_space 
      set unused = reserved 
      - (select sum(used) 
      from sysindexes 
      where indid in (0, 1, 255) 
      and id = @id) 
      where objid = @id 
     
      update #spt_space 
      set rows = i.rows 
      from sysindexes i 
      where i.indid < 2 
      and i.id = @id 
      and objid = @id 
     
      fetch next from c_tables 
      into @id 
    end 
     
    select TableName = (select left(name,60) from sysobjects where id = objid), 
      Rows = convert(char(11), rows), 
      ReservedKB = ltrim(str(reserved * d.low / 1024.,15,0) + ' ' + 'KB'), 
      DataKB = ltrim(str(data * d.low / 1024.,15,0) + ' ' + 'KB'), 
      IndexSizeKB = ltrim(str(indexp * d.low / 1024.,15,0) + ' ' + 'KB'), 
      UnusedKB = ltrim(str(unused * d.low / 1024.,15,0) + ' ' + 'KB') 
     
    from #spt_space, master.dbo.spt_values d 
    where d.number = 1 
    and d.type = 'E' 
    order by reserved desc  
    drop table #spt_space 
    
    close c_tables 
    deallocate c_tables

    运行效果

  • 相关阅读:
    UE4美术之数学基础知识(一)
    如何用Unity制作逼真的自然场景?
    git拉取和上传项目代码
    Chaosblade-故障使用工具
    如何对数据库做优化
    分布式和集群的概念
    token、cookie、session的区别
    Json中的json.tojsonString()方法
    JSON的put方法
    fastjson中的相关方法
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/13201818.html
Copyright © 2011-2022 走看看