Mit diesem Script kann man die Indexe prüfen und bekommt gemäß den Schwellenwerten auch die passenden SQL Scripte dafür.
Allerdings sollte man das nicht einfach blind ausführen, da Index Aufbereitung großen Einfluss auf die Performance haben kann.
SELECT
TableName = OBJECT_NAME(ind.OBJECT_ID)
,IndexName = ind.name
,IndexType = indexstats.index_type_desc
,Fragmentation = ROUND(indexstats.avg_fragmentation_in_percent,2)
,SqlScript = CASE
WHEN indexstats.avg_fragmentation_in_percent > 5 AND indexstats.avg_fragmentation_in_percent < = 30
THEN 'ALTER INDEX [' + ind.name + '] ON [' + OBJECT_SCHEMA_NAME(ind.object_id) + '].[' + OBJECT_NAME(ind.OBJECT_ID) + '] REORGANIZE'
WHEN indexstats.avg_fragmentation_in_percent > 30
THEN 'ALTER INDEX [' + ind.name + '] ON [' + OBJECT_SCHEMA_NAME(ind.object_id) + '].[' + OBJECT_NAME(ind.OBJECT_ID) + '] REBUILD WITH (ONLINE = ON)'
ELSE NULL END
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats
INNER JOIN sys.indexes ind
ON ind.object_id = indexstats.object_id
AND ind.index_id = indexstats.index_id
WHERE indexstats.avg_fragmentation_in_percent > 0
ORDER BY indexstats.avg_fragmentation_in_percent DESC;
/*
avg_fragmentation_in_percent-Wert Korrigierende Anweisung
> 5 % und < = 30 % ALTER INDEX REORGANIZE
> 30% ALTER INDEX REBUILD WITH (ONLINE = ON)
*/
Keine Kommentare:
Kommentar veröffentlichen