Bu makalede, SQL Server veritabanı üzerinde bir tabloya ait indeks yapılarında yer alan page count ve row count gibi detaylı bilgileri nasıl görüntüleyebileceğimizi ele alacağız. Özellikle filtrelenmiş indekslerde bu tür bilgiler oldukça önemlidir ve performans analizi açısından değerli ipuçları sunar.
Aşağıda paylaşacağımız sorgu sayesinde, ilgili tablo altında bulunan tüm indekslerin sayfa kullanım bilgilerine, satır sayılarına ve filtre durumlarına ulaşabileceğiz.
SELECT
i.index_id,
i.name AS index_name,
i.type_desc,
ps.reserved_page_count,
ps.used_page_count,
ps.reserved_page_count * 8 AS Size_KB,
ps.row_count AS total_indexed_rows, -- İndeksin kapsadığı toplam satır sayısı
CASE
WHEN i.filter_definition IS NOT NULL THEN ps.row_count -- Filtreli indeks ise satır sayısını göster
ELSE ps.row_count -- Filtresiz indeks ise toplam satır sayısını göster
END AS filtered_indexed_rows,
i.filter_definition
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
WHERE ps.object_id = OBJECT_ID('Person.Address');
Sorgu Açıklaması
- index_id / index_name / type_desc: İlgili indeksin kimliği, adı ve türünü gösterir.
- reserved_page_count ve used_page_count: İndeksin ayırdığı ve aktif olarak kullandığı sayfa sayılarını belirtir.
- Size_KB: Sayfa sayısı * 8 ile çarpılarak indeksin yaklaşık boyutu kilobayt cinsinden hesaplanır.
- row_count: İndeksin kapsadığı toplam satır sayısıdır.
- filter_definition: Eğer indeks filtrelenmişse, buradaki değer NULL olmayacaktır.
Bu sorgu sayesinde hem normal hem de filtrelenmiş indekslerin yapısını analiz edebilir ve veritabanı performansı için kritik olan alanları gözlemleyebilirsiniz.
Not: Yukarıdaki örnekte ‘Person.Address’ tablosu kullanılmıştır. Kendi veritabanınıza göre tablo adını değiştirmeyi unutmayın.

Başka bir makalede görüşmek dileğiyle..
“Gurura kapılarak insanlara burun kıvırma, ortalıkta çalım satarak yürüme; unutma ki Allah gurura kapılıp kendini beğenen hiç kimseyi sevmez.”Lokman-18