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