Bu makalede NonClustered Index Seek operatörünü örnek üzerinden görmüş olacağız.
Non-clustered index’ler de mantıksal olarak bir ağaç yapısında tutulur. Ancak Clustered index’ten en büyük farkı, ağacın en alt seviyesindeki (Leaf Level) verilerdir.
- Root Level : Aramanın başladığı en üst nokta.
- Intermediate Levels: Veriye giden yolu daraltan navigasyon katmanları.
- Leaf Level: Burası en kritik noktadır. Burada gerçek veri satırları bulunmaz. Bunun yerine, gerçek verinin ana tablodaki yerini gösteren bir “Pointer” (İşaretçi) bulunur. Kısacası index hangi kolon üzerinde oluşturulmuşsa ilgili kolun ve yanında pointer bulunmaktadır. Clustered index varsa key id tablo üzerinde cluster index yoksa row id değeri bulunmaktadır.
Sorgumuzda bulunan şart ifadesinde belirtilen kolun üzerinde index tanımlı olduğu için ilgili sorgu sonucunda NonClustered Index Seek işlemi görülmektedir.

Nonclustered Index Seek operatörünün üzerine gelip Tooltip penceresinde yapının ne olduğunu görelim.

Buradaki sayısal tutarsızlıklar sorgu hızını doğrudan etkiler:
- Actual Number of Rows: 1
- Estimated Number of Rows for All Executions: ~1,90 (Görselde 1,90698 gibi görünüyor)
- Yorum: SQL Server 1 satır geleceğini tahmin etmiş ve gerçekten de 1 satır gelmiş. Tahmin ile gerçek birbirine çok yakın. Bu, istatistiklerin (statistics) güncel olduğunu ve SQL Server’ın doğru bir plan seçtiğini gösterir. Eğer arada uçurum olsaydı, UPDATE STATISTICS yapmanız gerekirdi.
Nonclustered Indeks Seek operatörü de Clustered Indeks Seek operatöründe olduğu gibi tablodaki tüm veriye değil sadece indeks kullanılarak organize edilmiş veriye erişmemizi sağlar. Ayrıca Nonclustered Indeks Seek operatörümüze ait Tooltip penceresinde bulunan Output listesindeki kolonlar kullanılan indeks içinde tanımlı ise işlemimiz Nonclustered Indeks Seek olarak tanımlanır, çağrılan kolunlar indexs içerisinde olmaktadır.

Eğer tüm Output listesindeki kolonlar indeks içinde tanımlı değilse fazladan birde Lookup işlemi uygulanacaktır.
Kısacası bir kolon üzerinde NonClustered index tanımlı olduğunda, sadece o kolonu getirmesini istediğimizde ve o kolonu koşul kısmında belirttiğimizde karşılaşacağımız operatördür.
Burada dikkat edilmesi gereken nokta, koşul olarak verdiğimiz kolon için NonClustered Index Seek yapacak olmasıdır. Fakat sorgu sonucunda başka kolonları da getirmesini istiyorsak burada NonClustered Index Seek yanında bir de included kolonun eklenmesi gerekmektedir.
Bu makalede NonClustered Index Seek operatörünü görmüş olduk. Başka bir makalede görüşmek dileğiyle..
“Böyle birine âyetlerimiz okunduğunda sanki kulaklarında ağırlık varmış da onu işitemiyormuş gibi büyüklük taslayarak sırt çevirir. Ona acıklı bir azabı müjdele!”Lokman-7
