Goodspeed

导航

sp_toptables过程看最大的N(默认为50)个表

 1CREATE proc sp_toptables @topcount int = 50
 2as
 3declare    @pagesize bigint
 4declare @dbid int
 5
 6select    @pagesize = low 
 7from    master.dbo.spt_values
 8where    number = 1
 9and    type = 'E'
10
11declare @spt_space table
12    (
13    objid    int null,
14    rows    int null,
15    reserved int null,
16    data    int null,
17    indexp    int null,
18    unused    int null
19    )
20
21insert    into @spt_space
22select    objid = id, 
23    rows = sum(case when indid in (01then rowcnt else 0 end),
24    reserved = sum(case when indid in (01255)
25            then reserved
26            else 0
27            end* @pagesize / 1024,
28    data = sum(case when indid in (01then dpages
29            when indid = 255 then used
30            else 0
31            end* @pagesize / 1024,
32    indexp = sum(case when indid in (01255)
33            then used
34            else 0
35            end* @pagesize / 1024,
36    unused = sum(case when indid in (01255)
37            then used
38            else 0
39            end* @pagesize / 1024
40from    sysindexes
41where    rowcnt > 0
42group
43by    id, indid
44order 
45by    reserved desc
46
47set rowcount @topcount
48select    Table_Name = name,
49    rows,
50    reserved_KB = ltrim(str(reserved,15,0+ ' ' + 'KB'),
51    data_KB = ltrim(str(data,15,0+ ' ' + 'KB'),
52    index_size_KB = ltrim(str(indexp - data,15,0+ ' ' + 'KB'),
53    unused_KB = ltrim(str(reserved - unused,15,0+ ' ' + 'KB'),
54    idx_data_ratio = ltrim(str((indexp - data)*100 /data) + '%'),
55    unused_pct = ltrim(str((reserved - unused) * 100 /reserved) + '%')
56from    @spt_space s join sysobjects o on o.id = s.objid and xtype = 'U'
57where    data > 0
58order 
59by    reserved desc
60set rowcount 0
61

posted on 2005-06-18 09:29  Goodspeed  阅读(1035)  评论(1)    收藏  举报