Veritabanlarında Indexleme Mantığı

Piyasada bulunan popüler veritabanlarının tamamında (Mysql, Microsoft SQL, Oracle) index desteği vardır. Eğer büyük boyutlarda veritabanlarıyla çalışıyorsak iyi bir peformans alabilmemiz için index kullanmak zorundayız. Bu yazımda nerelerde index kullanmalıyız, index kullanmanın avantajları ve dezavantajlarından bahsedeceğim.

Index Nedir ?
Index tablolalarınızda bulunan kolonların içerisindeki verilerin belirli bir düzene göre sıralanmasıdır. Bu sıralamanın amacı ulaşmak istediğimiz veriye çok daha hızlı sürelerde ulaşabilmektir. Örneğin aşağıdaki gibi bir sorgumuz olsun.

SELECT * FROM kullanicilar WHERE isim="Sinan"

yukarıdaki sorguda kullanıcılar tablomuzda 100.000 kayıt olduğunu düşünelim. Eğer Sinan isimli kullanıcı 90.000 inci üye ise veritabanımız bu isme ulaşana kadar satır satır sorgulama yapacaktır. 90.000 inci kayıtta bu ismi bulduğunda ise kaydımızı ekrana getirecektir.

Eğer burada index yapısını kullansaydık veritabanımız isim kolonunu bir dizin şeklinde tutacak ve bu ismi nerede aramasını gerektiğini bilecekti. Bu bize kayıt sayısının çok olduğu tablolarda aramalara göre (WHERE yada LIKE) sonuç listelerken oldukça performans sağlayacaktır.

Özellikle birden çok tabloyu birbirlerine bağlarken (JOIN komutları vb.) index yapısını kullanmanız çok daha az satır taranacağı için oldukça yüksek performans sağlayacaktır.

Nerelerde Index Kullanmalıyım ?
Aslında bu sorunun cevabını benim değil sizin vermeniz gerekiyor, index kullanımının standart bir yapısı yoktur. Daha çok hangi kolonlara göre sorgulama yapıyorsanız yada hangi tablolarda foreign key kullanıyorsanız bu alanları index olarak göstermeniz mantıklı olacaktır.

Dikkat: ID gibi primary key vererek benzersiz bir şekilde sıraladığınız alanlarda index kullanmanıza gerek yoktur. Primary key olarak tanımladığınız alanlar veritabanı tarafından otomatik olarak indexlenir.

Index kullanmanın zararlarları nelerdir ? Nerelerde kullanmamalıyız ?

  • Ufak bir veritabanına sahipseniz index kullanmanıza gerek yoktur. Veritabanızın boyutu yükseldikten sonra index kullanımına geçebilirsiniz.
  • Index kullanmak insert,update,delete işlemlerinin hızını yavaşlatır. Çok fazla fark yaratacak bir yavaşlık olmasa dahi her işlemden sonra tüm kolonda tekrar indexleme işlemi yapılmaktadır.
  • Yukarıda da belirttiğim gibi Primary Key olarak tanımladığınız kolonlarda index kullanımına gerek yoktur.
  • Index kullanımı sunucunun diskinde fazladan alan kullanımına yol açar. Bana göre sağladığı faydaların yanında fazla önemsenmeyecek bir durumdur. Yinede alanınız kısıtlı ise bilmenizde fayda var.
  • Tüm tabloların tüm sutunlarını indexlemek gibi bir hataya düşmeyin. Bu size hız artışı olarak değil aksine aşırı derece yavaşlama olarak dönecektir. Aynı zamanda sabit diskteki alan kullanımınıda oldukça artıracaktır.

Indexleme mantığı kısaca bu şekildedir. Umarım faydalı bir yazı olmuştur.

  1 Comment

  1. Tural   •  

    Salam. tewekkurler hocam . Azerbaycandan Salamlar.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir