sp_toptables过程看最大的N(默认为50)个表
1
CREATE proc sp_toptables @topcount int = 50
2
as
3
declare @pagesize bigint
4
declare @dbid int
5![]()
6
select @pagesize = low
7
from master.dbo.spt_values
8
where number = 1
9
and type = 'E'
10![]()
11
declare @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![]()
21
insert into @spt_space
22
select objid = id,
23
rows = sum(case when indid in (0, 1) then rowcnt else 0 end),
24
reserved = sum(case when indid in (0, 1, 255)
25
then reserved
26
else 0
27
end) * @pagesize / 1024,
28
data = sum(case when indid in (0, 1) then dpages
29
when indid = 255 then used
30
else 0
31
end) * @pagesize / 1024,
32
indexp = sum(case when indid in (0, 1, 255)
33
then used
34
else 0
35
end) * @pagesize / 1024,
36
unused = sum(case when indid in (0, 1, 255)
37
then used
38
else 0
39
end) * @pagesize / 1024
40
from sysindexes
41
where rowcnt > 0
42
group
43
by id, indid
44
order
45
by reserved desc
46![]()
47
set rowcount @topcount
48
select 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) + '%')
56
from @spt_space s join sysobjects o on o.id = s.objid and xtype = 'U'
57
where data > 0
58
order
59
by reserved desc
60
set rowcount 0
61![]()
CREATE proc sp_toptables @topcount int = 502
as3
declare @pagesize bigint4
declare @dbid int5

6
select @pagesize = low 7
from master.dbo.spt_values8
where number = 19
and type = 'E'10

11
declare @spt_space table12
(13
objid int null,14
rows int null,15
reserved int null,16
data int null,17
indexp int null,18
unused int null19
)20

21
insert into @spt_space22
select objid = id, 23
rows = sum(case when indid in (0, 1) then rowcnt else 0 end),24
reserved = sum(case when indid in (0, 1, 255)25
then reserved26
else 027
end) * @pagesize / 1024,28
data = sum(case when indid in (0, 1) then dpages29
when indid = 255 then used30
else 031
end) * @pagesize / 1024,32
indexp = sum(case when indid in (0, 1, 255)33
then used34
else 035
end) * @pagesize / 1024,36
unused = sum(case when indid in (0, 1, 255)37
then used38
else 039
end) * @pagesize / 102440
from sysindexes41
where rowcnt > 042
group43
by id, indid44
order 45
by reserved desc46

47
set rowcount @topcount48
select 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) + '%')56
from @spt_space s join sysobjects o on o.id = s.objid and xtype = 'U'57
where data > 058
order 59
by reserved desc60
set rowcount 061

浙公网安备 33010602011771号