fill factor
avg_fragmentation_in_percent
avg_page_space_used_in_percent
sys.dm_db_index_physical_stats
fragmentation percentage of 40 or higher are recommended to be rebuilt
below 40 are recommended to be reorganized
use ApplicationDatabase; select db_name(db_id()) as database_name, object_schema_name(idxfra.object_id) + '.' + object_name(idxfra.object_id, db_id()) as object_name, i.name as index_name, idxfra.index_type_desc, idxfra.partition_number, idxfra.alloc_unit_type_desc, idxfra.index_depth, idxfra.index_level, round(idxfra.avg_fragmentation_in_percent, 0) as avg_fragmentation_in_percent, idxfra.avg_page_space_used_in_percent, idxfra.avg_fragment_size_in_pages, idxfra.fragment_count, idxfra.page_count, idxfra.record_count, idxfra.min_record_size_in_bytes, idxfra.max_record_size_in_bytes, idxfra.avg_record_size_in_bytes, case when round(idxfra.avg_fragmentation_in_percent,0) >= 40 then 'alter index ' + i.name + ' on ' + object_schema_name(idxfra.object_id) + '.' + object_name(idxfra.object_id, db_id()) + ' rebuild;' else 'alter index ' + i.name + ' on ' + object_schema_name(idxfra.object_id) + '.' + object_name(idxfra.object_id, db_id()) + ' reorganize;' end as recommendation from sys.dm_db_index_physical_stats(db_id(), null, null, null, 'DETAILED') idxfra inner join sys.indexes i on idxfra.object_id = i.object_id and idxfra.index_id = i.index_id where idxfra.index_type_desc <> 'HEAP' and idxfra.avg_fragmentation_in_percent > 10 and idxfra.page_count > 1000 order by idxfra.avg_fragmentation_in_percent desc, object_name(idxfra.object_id, db_id()), i.name;