SQL Server 2008’de filtrelenmiş indeksler


Bazı kolonlar indeks kullanıp kullanmamak konusunda bizi şüphede bırakır.

Şöyle bir durum düşünün:

Müşterilerinizi tuttuğunuz bir tablo var. Bir kolonda da şehir bilgisi var. Müşterilerinizin yüzde 60’ı İstanbul’da, yüzde 20’si Kocaeli’de, kalan yüzde 20 ise 30-40 ile birbirine yakın oranlarda dağılmış durumda.

İstanbul ya da Kocaeli dışındaki illerdeki müşteri oranınız yüzde 1’in altında olacaktır. Bu illerle ilgili şehre göre kısıtlama getiren sorgular, şehir alanında bulunacak bir nonclustered indeksten fayda sağlayabilir. Ama kayıtların yüzde 80’ini içeren İstanbul ve Kocaeli müşterileri için indeksin faydası değil zararı olur. Hem sorgu kısıtında bu şehirlerin geçmesi durumunda indeksten yararlanılmayacak hem de bu büyük kütlede yaşanacak değişiklikler bu indeksi de etkileyebilecektir.

İndeksi oluştururken filtre kullanabilme imkanımız, bize İstanbul ve Kocaeli dışındaki kayıtlar için şehir kolonunda nonclustered indeks oluşturma imkanı sağlar.

Hoş bir özellik. Büyük kısmı null olan kolonlarda sadece null olmayan değerleri indekslemek için de aynı özelliği kullanabilirsiniz.

Bir başka kullanım ise kayıtların sadece ilgi çeken bölümünü indekslemek olabilir bu teknikle. Yine müşterilerle ilgili kredi puanı kolonu olduğunu düşünün. Diyelim ki sorgularınız -her nedense- kredi puanı 0 ila 20 arasında olan müşterilere odaklanıyor. Kredi puanı kolonunu sadece bu aralıktaki değerler için indekslemeniz düşünülebilir.

Bu yazı SQL Server 2008 içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s