This should help you identify which indexes need rebuilding as opposed to reorganizing. use adventureworksGO SET NOCOUNT ON; SELECT Object_Name(dt.Object_id) AS ObjectName , si.Name AS IndexName ,dt.avg_fragmentation_in_Percent ,dt.avg_page_Space_Used_in_Percent ,CASE WHEN dt.avg_page_Space_Used_in_Percent < 75 THEN 'Yes' ELSE 'No' END AS Has_Internal_Frag_Occured ,CASE WHEN dt.avg_fragmentation_in_percent > 10 THEN 'Yes' ELSE 'No' END AS Has_External_Frag_Occured ,CASE WHEN (dt.avg_page_Space_Used_in_Percent <75 AND dt.avg_page_Space_Used_in_Percent >60) OR (dt.avg_fragmentation_in_Percent > 10 AND dt.avg_fragmentation_in_Percent < 15 )THEN 'REORGANIZE' WHEN (dt.avg_page_Space_Used_in_Percent < 60) OR (avg_fragmentation_in_Percent >15) THEN 'REBUILD' END AS Execution_Type FROM (SELECT object_ID ,index_id ,avg_fragmentation_in_percent ,avg_page_Space_Used_in_Percent FROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'DETAILED') WHERE INDEX_ID <> 0) AS DT INNER JOIN sys.indexes SI ON SI.Object_ID = DT.Object_ID AND SI.index_ID = DT.Index_IDWHERE CASE WHEN dt.avg_fragmentation_in_percent > 10 THEN 'Yes' ELSE 'No' END = 'Yes' OR CASE WHEN dt.avg_page_Space_Used_in_Percent < 75 THEN 'Yes' ELSE 'No' END = 'Yes';SET NOCOUNT OFF;
Dallr