İndekslerle uğraşırken anlaşılması gereken birkaç kavram ve terim vardır. Arayışlar, taramalar ve aramalar, indekslerin select ifadeleriyle kullanılma yöntemlerinden bazılarıdır. Anahtar sütunların seçiciliği, bir endeksin ne kadar etkili olabileceğinin belirlenmesinde bir bütündür.
SQL Server Query Optimizer, istediğiniz verileri bulmanın en iyi yolunun bir dizin içindeki aralığı taramak olduğunu belirlediğinde, bir arama gerçekleşir. Aramalar tipik olarak, bir sorgu bir indeks tarafından "kapsandığında" olur, yani arama tahminleri indeks anahtarındadır ve görüntülenen sütunlar anahtar içerisinde veya dahil edilmiştir. SQL Server Query Optimizer, verileri bulmanın en iyi yolunun tüm dizini taramak ve sonuçları filtrelemek olduğunu belirlediğinde bir tarama gerçekleşir. Bir arama genellikle, bir dizin, dizin anahtarında veya dahil edilen sütunlarda istenen tüm sütunları içermediğinde gerçekleşir. Sorgu en iyi duruma getiricisi daha sonra istenen diğer sütunları "aramak" için kümelenmiş anahtarı (kümelenmiş bir dizine karşı) veya RID'yi (bir öbeye karşı) kullanır.
Tipik olarak, arama işlemleri fiziksel olarak daha küçük bir veri kümesini sorgulamak nedeniyle taramalardan daha etkilidir. Çok küçük bir ilk veri seti gibi, bunun böyle olmadığı durumlar vardır, ancak bu sorunuzun kapsamı dışında kalmaktadır.
Şimdi, bir endeksin ne kadar etkili olduğunu nasıl belirleyeceğinizi sordunuz ve akılda tutulması gereken birkaç şey var. Kümelenmiş bir dizinin anahtar sütunlarına kümeleme anahtarı denir. Bu, kümelenmiş bir dizin bağlamında kayıtların benzersiz hale getirilmesidir. Tüm kümelenmemiş dizinler, gerektiğinde arama yapmak için varsayılan olarak kümelenmiş anahtarı içerecektir. Tüm dizinler, ilgili her DML deyimi için eklenecek, güncellenecek veya silinecek. Bununla birlikte, belirli ifadelerdeki performans kazanımlarını ifadelerdeki ekleme, silme ve güncelleme performanslarına karşı dengelemek en iyisidir.
Bir dizinin ne kadar etkili olduğunu belirlemek için dizin tuşlarınızın seçiciliğini belirlemelisiniz. Seçicilik, toplam kayıtların farklı kayıtların yüzdesi olarak tanımlanabilir. 100 toplam kayda sahip bir [person] tablosu varsa ve [first_name] sütunu 90 farklı değer içeriyorsa, [first_name] sütununun% 90 seçici olduğunu söyleyebiliriz. Seçicilik ne kadar yüksek olursa, indeks tuşu o kadar verimli olur. Seçiciliği göz önünde bulundurarak, en seçici sütunlarınızı ilk önce dizin anahtarınıza koymak en iyisidir. Önceki [şahsiyet] örneğimi kullanarak,% 95 seçici bir [soyadı] sütunu olsaydı ne olurdu? İndeks anahtarı olarak [last_name], [first_name] ile bir dizin oluşturmak istiyoruz.
Bunun biraz uzun soluklu bir cevap olduğunu biliyorum, ancak bir endeksin ne kadar etkili olacağını belirleyen pek çok şey var ve performans kazanımlarını ölçmeniz gereken birçok şey var.