İndex Kavramı_4
25 Aralık 2016 Pazar
Index kavramı serimin tümünü okudu iseniz heralde şu tespite itirazınız olmayacaktır: 'Index'ler aradığımız satıra hızlıca gitmemizi sağlayan yapılardır.' Bu ifadem ile sadece SELECT elementi ile yapılan sorgular aklınıza gelmesin. Buna tüm DML(DELETE, INSERT, UPDATE) komutları dahil. Indexlenmiş bir kolon özelinde kayıt ekleme, kayıt güncelleme ve kayıt silme işlemlerini de hızlı bir şekilde yapabilirsiniz. (group by işlemleri de buna dahil.) Tabi bunlar index kullanmanın güzel(avantajlı) tarafları..Madalyonun bir'de öteki yüzü var, şimdi buna bakalım.
Index kullanmanın dezavantajları:
* Şayet Non-Clustered index kullanıyorsanız fazladan disk alanına ihtiyacınız olacaktır. Bildiğiniz gibi Non-Clustered index kullanmada herhangi bir kısıt yok dolayısıyla kullandığınız her kolondaki NonClustered index için diskinizde ilgili satırın boyutu kadar yer açmanız gerekir. (Clustered index'ler için böyle bir durum yok biliyorsunuz.)
* DML(Insert, Update, Delete) cümlelerinde performans düşüklüğüne sebebiyet verir. Şimdi diyeceksinizki paragrafa giriş yaparken bunun tam aksini söylüyordun 2 dk içinde ne olduda fikrin değişti ? Arkadaşlar şayet bir tablo içersinde birden fazla index kullandıysanız yapacağınız UPDATE/DELETE sorgusunda index'e sahip tüm kolonlar da UPDATE/DELETE ihtiyacı duyacaktır. Yani siz bir satırı sildiğinizde o satıra sahip diğer index'lerin de güncellenmesi gerekir dolayısıyla bu işlem performans'da düşüklüğe sebebiyet verecektir.. Bu maddeden çıkarmamız gereken bir sonuç olduğunu düşünüyorum. Index'ler faydalıdır, hızlı sonuç almamızı sağlarlar tamam ama hâl böyle diye tüm kolonlara index ataması yapmamalıyız..
* Index yarattığınızda o kolon için bir adres satırı oluşturulur. Ve ilgili kolonun tüm satırları artan(asc) şekilde sıralanır. Siz şayet SELECT * cümlesi ile söze başlayıp işinize yaramayan satırları da çekmek istediğinizde ana tablonuz adres tablosu(Lookup Table)na gidip her defasında tüm kolonlar için doğrulama yapacak, bu da performans düşüklüğüne sebep olacaktır. Dolayısıyla ihtiyacınızı belirleyip buna göre sorgulama yapmanızda fayda var.