Total Page Preview:   000000003124

SQL Server - Fragmentation on azure sql database

In this article we will learn fragmentation on azure SQL database or SQL server database.

Index Fragmentation In SQLDatabase

        OBJECT_NAME(ps.object_id) AS TableName
       , AS IndexName
FROM   sys.dm_db_partition_stats ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id AND ps.index_id = i.index_id
CROSS APPLY sys.dm_db_index_physical_stats(DB_ID(), ps.object_id, ps.index_id, null, 'DETAILED') ips
ORDER BY ips.avg_fragmentation_in_percent DESC

Result :

Index Fragmentation In SQLDatabase
 What is avg_fragmentation_in_percent and avg_page_space_used_in_percent:
  • avg_fragmentation_in_percent: avg_fragmentation_in_percent is a percentage value that represents external fragmentation. For a clustered table and leaf level of index pages, this is a Logical fragmentation, while for heap, this is Extent fragmentation. The minimum value is better. If this value is more than 10%, than some corrective action should be taken.


  • avg_page_space_used_in_percent: avg_page_space_used_in_percent is an average percentage use of pages that represents to internal fragmentation. Higher the value, the better it is. If this value is lower than 75%, than some corrective action should be taken.
Reducing fragmentation(Suggestion):
  • Reducing Fragmentation in Heap: Create a clustered index on the table. when Creating the clustered index, rearrange the records in an order, and then place the pages contiguously on disk.


  • Reducing Fragmentation in Index: if avg_fragmentation_in_percent between 5% to 30%, then use ALTER INDEX REORGANIZE: This statement is replacement for DBCC INDEXDEFRAG to reorder the leaf level pages of the index in a logical order. As this is an online operation, the index is available while the statement is running.


  • Reducing Fragmentation in Index: if avg_fragmentation_in_percent between 30% to 100% then use ALTER INDEX REBUILD: This is replacement for DBCC DBREINDEX to rebuild the index online or offline. also use the drop and re-create index method.


  • Note:  I will strongly  recommend Please don't drop and re-create cluster index.


Thank You

About Author

Brijesh Kumar

Database Developer

I have more then 6 years Experience in Microsoft Technologies - SQL Server Database, ETL Azure Cloud - Azure SQL Database, CosmosDB, Azure Data Factory, PowerBI, Web Job, Azure Function, Azure Storage, Web Apps, Powershall and Database Migration On-Premise to Azure Cloud.
LinkedIn :





Facebook User: