Hier zwei Abfragen mit der man schnell und einfach den Grad der Fragmentierung für Objekte in einer SQL Server Datenbank angezeigt bekommt:
SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName , ind.name AS IndexName , indexstats.index_type_desc AS IndexType , indexstats.avg_fragmentation_in_percent 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 > 30 ORDER BY indexstats.avg_fragmentation_in_percent DESC
SELECT dbschemas.[name] as 'Schema' , dbtables.[name] as 'Table' , dbindexes.[name] as 'Index' , indexstats.alloc_unit_type_desc , indexstats.avg_fragmentation_in_percent , indexstats.page_count FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id] INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id] INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id] AND indexstats.index_id = dbindexes.index_id WHERE indexstats.database_id = DB_ID() ORDER BY indexstats.avg_fragmentation_in_percent desc