EXEC sp_configure 'show advanced options',1GO
RECONFIGURE WITH OVERRIDEGO
DECLARE @DefaultFillFactor INT DECLARE @Fillfactor TABLE(Name VARCHAR(100),Minimum INT ,Maximum INT,config_value INT ,run_value INT)
INSERT INTO @Fillfactor EXEC sp_configure 'fill factor (%)'
SELECT @DefaultFillFactor = CASE WHEN run_value=0 THEN 100 END FROM @Fillfactor
SELECT DB_NAME() AS DBname, QUOTENAME(s.name) AS CchemaName, QUOTENAME(o.name) AS TableName, i.name AS IndexName, stats.Index_type_desc AS IndexType, stats.page_count AS [PageCount], stats.partition_number AS PartitionNumber, CASE WHEN i.fill_factor>0 THEN i.fill_factor ELSE @DefaultFillFactor END AS [Fill Factor], stats.avg_page_space_used_in_percent, CASE WHEN stats.index_level =0 THEN 'Leaf Level' ELSE 'Nonleaf Level' END AS IndexLevel FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL , NULL, 'DETAILED') AS stats, sys.objects AS o, sys.schemas AS s, sys.indexes AS iWHERE o.OBJECT_ID = stats.OBJECT_ID AND s.schema_id = o.schema_id AND i.OBJECT_ID = stats.OBJECT_ID AND i.index_id = stats.index_idAND stats.avg_page_space_used_in_percent<= 85 AND stats.page_count >= 10 AND stats.index_id > 0 ORDER BY stats.avg_page_space_used_in_percent ASC,stats.page_count DESC
RECONFIGURE WITH OVERRIDEG
ODECLARE @DefaultFillFactor INT DECLARE @Fillfactor TABLE(Name VARCHAR(100),Minimum INT ,Maximum INT,config_value INT ,run_value INT)
SELECT DB_NAME() AS DBname, QUOTENAME(s.name) AS CchemaName, QUOTENAME(o.name) AS TableName, i.name AS IndexName, stats.Index_type_desc AS IndexType, stats.page_count AS [PageCount], stats.partition_number AS PartitionNumber, CASE WHEN i.fill_factor>0 THEN i.fill_factor ELSE @DefaultFillFactor END AS [Fill Factor], stats.avg_fragmentation_in_percent,stats.fragment_count, CASE WHEN stats.index_level =0 THEN 'Leaf Level' ELSE 'Nonleaf Level' END AS IndexLevel FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL , NULL, 'LIMITED') AS stats, sys.objects AS o, sys.schemas AS s, sys.indexes AS iWHERE o.OBJECT_ID = stats.OBJECT_ID AND s.schema_id = o.schema_id AND i.OBJECT_ID = stats.OBJECT_ID AND i.index_id = stats.index_idAND stats.avg_fragmentation_in_percent>= 20 AND stats.page_count >= 1000ORDER BY stats.avg_fragmentation_in_percent DESC,stats.page_count DESC
In this query , I have used a where condition to fetch indexes which have fragmentation greater than 20 percent and have minimum of 1000 pages.