• SQL查看所有表的大小


    --查看所有表的大小
    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
  • 相关阅读:
    关于List,Set,Map集合的遍历方法
    关于内部类的了解
    for循环打印图形的详细解析(三角形)
    SSH 免密码登录
    foreach 和 for 的区别
    有关Java集合的区别,和常用方法的总结
    hadoop完全分布式的安装
    对于Oracle analyze table的使用总结 . 对于Oracle analyze table的使用总结 .
    Oracle执行计划与统计信息的一些总结
    oracle10g 统计信息查看、收集
  • 原文地址:https://www.cnblogs.com/binghou/p/9097423.html
Copyright © 2020-2023  润新知