İndekslerin fragmente olması istenmeyen bir durumdur. Fragmente olan indexlerin belirli periyotlarda rebuild/reorganize edilmesi gerekir.
Veritabanızda fragmente oranı %30 un üzerinde üzerinde olan indeksleri bulup rebuild eden T-SQL kod aşağıdaki gibidir:
declare @SQLstmt varchar(max)
set @SQLstmt =''
select @SQLstmt =@SQLstmt + 'alter index ' + i.name + ' on ' + object_name(s.object_id ) + ' rebuild with(online=on);--pagecount:' + cast(s.page_count as varchar(16)) + '
'
from sys.dm_db_index_physical_stats(db_id(db_name()),null,null,null,null) s
inner join sys.indexes i on s.object_id=i.object_id and s.index_id=i.index_id
where s.avg_fragmentation_in_percent>30
and s.index_id>0
order by s.page_count
exec(@SQLstmt )
Dilerseniz aynı işlemi dinamik tek bir SQL cümlesi yerine cursor ile de halledebilirsiz.
Hiç yorum yok:
Yorum Gönder