由於在工作中,系統重組索引耗時太久,排查不出問題的根源,故此手工寫了如下**。
/****** object: table [dbo].[reorganizelog] script date: 06/20/2013 16:09:27 *****
*/set ansi_nulls on
goset quoted_identifier on
goset ansi_padding on
gocreate
table
[dbo
].[reorganizelog]([
pkid][
int]
identity(1,1) not
null,
[name][
varchar
](200) null,
[tablename][
varchar
](200) null,
[begintime][
datetime
]null,
[endtime][
datetime
]null,
[timespan][
time
](7) null,
constraint
[pk_reorganizelog
]primary
keyclustered([
pkid
]asc
)with (pad_index =
off, statistics_norecompute =
off, ignore_dup_key =
off, allow_row_locks =
on, allow_page_locks =
on) on
[primary
]) on
[primary]go
set ansi_padding off
go接下來,利用游標對所有索引進行遍歷,逐個重組,也可以改成逐個重建,用到的自己動手修改
usedbname;
godeclare
@indexname
varchar(200), @tablename
varchar(100);
declare allindex cursor
forselect a.name ,
c.name
from sysindexes a
join sysindexkeys b on a.id = b.id
and a.indid = b.indid
join sysobjects c on b.id = c.id
where a.indid not
in ( 0, 255 )
and c.xtype='u
'order
byc.name ,
a.name
open allindex;
fetch
next
from allindex into
@indexname, @tablename;
while
@@fetch_status=0
begin
--concatenate and display the current values in the variables.
@indexname+'
,'+@tablename
declare
@begintime
datetime,@endtime
datetime,@timespan time,@sql
varchar(1000)
set@begintime
=getdate()
set@sql='
alter index '+
@indexname+'
on '
+@tablename+'
reorganize with ( lob_compaction = on )
'exec(@sql)
set@endtime
=getdate()
set@timespan
=@endtime
-@begintime
insert
into
[yeegotemp
].[dbo
].[reorganizelog
]([name
],[tablename
],[begintime
],[endtime
],[timespan
])values(@indexname,@tablename,@begintime,@endtime,@timespan)
fetch
next
from allindex into
@indexname, @tablename;
endclose allindex;
deallocate allindex;
go通過以上**即可以實現。
在此以作備忘之用。
維護索引 通過重組索引提高效能
如果碎片程度小於30 建議使用重組而不是重建。因為重組不會鎖住資料頁或者資料表,並且降低cpu的資源。總得來說,重組會清空當前的b tree,特別是索引的葉子節點,重組資料頁和消除碎片。和重建不同,重組不會新增任何新資料頁。為了了解是否有必要重組索引,需要首先檢視碎片程度,如果在10 以下,那一般沒...
維護索引 通過重組索引提高效能
如果碎片程度小於30 建議使用重組而不是重建。因為重組不會鎖住資料頁或者資料表,並且降低cpu的資源。總得來說,重組會清空當前的b tree,特別是索引的葉子節點,重組資料頁和消除碎片。和重建不同,重組不會新增任何新資料頁。為了了解是否有必要重組索引,需要首先檢視碎片程度,如果在10 以下,那一般沒...
第十章 維護索引(4) 通過重組索引提高效能
原文 第十章 維護索引 4 通過重組索引提高效能 如果碎片程度小於30 建議使用重組而不是重建。因為重組不會鎖住資料頁或者資料表,並且降低cpu的資源。總得來說,重組會清空當前的b tree,特別是索引的葉子節點,重組資料頁和消除碎片。和重建不同,重組不會新增任何新資料頁。為了了解是否有必要重組索引...