Bu makalede index fragmentation yapısına değinmiş olacağız. Öncelikle index yapıları neden fragmentation olur. Kullanıcılar tabloya insert update ve delete işlemleri sonucu index yapımızın olduğu ilgili page içerisinde alan kalmayabilir. Bunun için sql server page yapımıza sığmayan yeni değerler farklı bir page üzerinde durmaktadır. Buda verilerimizin dağınık bir şekilde durmasına ve index yapımızın bozulmasına sebebiyet verecektir.
Aşağıdaki sorgu veritabanı altında bulunan belirtilen tablo ve tablo altındaki index fragmentation oranlarını artandan azalan yapıya doğru vermektedir. Aynı index page count değerlerini vermektedir.
SELECT
dbschemas.[name] as 'SchemaName',
dbtables.[name] as 'TableName',
dbindexes.[name] as 'IndexName',
indexstats.avg_fragmentation_in_percent,
indexstats.page_count
FROM
sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, 'LIMITED') 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]='Address' and
indexstats.avg_fragmentation_in_percent >=0
ORDER BY indexstats.avg_fragmentation_in_percent desc
GO
dbtables.[name]=’Address’ kısmı yorum satırı olarak değiştirilirse veritabanı altında bulunan tüm tablolar için sonuç dönmektedir. Sadece tablo ismi belirtilmesi yeterli aynı tablo ismindeki tüm schema’larımız dönmektedir.

Aşağıdaki sorgu veritabanı altında bulunan tüm tablo ve tablo altındaki index fragmentation oranlarını artandan azalan yapıya doğru vermektedir. Aynı zamanda index page count sayısını vermektedir.
select dbschemas.name as SemaAdi,t.name AS TabloAdi, i.name AS IndexAdi,avg_fragmentation_in_percent,page_count
from sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,NULL) ips
join sys.tables t on ips.object_id=t.object_id
INNER JOIN sys.schemas dbschemas on t.schema_id = dbschemas.schema_id
join sys.indexes i on ips.object_id=i.object_id and ips.index_id=i.index_id
order by avg_fragmentation_in_percent desc

Bu makalede kısaca Indexs’lerin fragmentation ne olduğunu ve fragmentation oranlarını bulma scriptlerini görmüş olduk. Başka bir makalede görüşmek dileğiyle..
“(Mümin) kardeşinle münakaşa etme, onun hoşuna gitmeyecek şakalar yapma ve ona yerine getirmeyeceğin bir söz verme.” (Tirmizî, Birr, 58.)