Show index fragmentation on SQL Server

Created by Jeremy Burgess, Modified on Mon, 8 Nov, 2021 at 6:26 PM by Jeremy Burgess

Source: https://www.se.com/ww/en/faqs/FA234246/


SELECT dbschemas.[name] AS 'Schema'
	,dbtables.[name] AS 'Table'
	,dbindexes.[name] AS 'Index'
	,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()
	-- AND dbtables.[name] LIKE '%tablename%' -- Use this to filter by table
ORDER BY indexstats.avg_fragmentation_in_percent DESC


Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article