Alper ÇELİK

Bilgisayar Mühendisi

İndex Kavramı_1

Index'ler sorgu cümlelerimiz ile kullanılan ve bir an önce sonuca ulaşma amacı taşıyan yapılardır. Index'ler tablolar ve view'ler üzerinde oluşturulurlar. Bir index'in yapısını günlük hayatta okuduğumuz kitaplardakine benzer şekilde düşünebiliriz. Örneğin; ilgimizi çeken konuya ulaşmak için kitabın başında bulunan KONU ----> SAYFASI durumunda olduğu gibi istediğimiz sonuca hızlıca ulaşmak için bundan yararlanırız. Şayet kitaplarda bu şekilde bir yönlendirici yapı olmasaydı istediğiniz sayfaya gidebilmek için kitabın en başından sonuna kadar tek tek arama yapmak durumunda kalacaktık..İşte performanslı sorgu sonuçları elde edebilmek için SQL Server'da index yapısı geliştirilmiştir. Eğer index yapısını kullanmaz iseniz sorgu motoru sonuca ulaşmak için baştan sona tablodaki her satırı kontrol edecektir. Bu şekildeki düzene tablo taraması deniyor. Tablo taramasının tahmin edeceğiniz üzere kötü bir performansı vardır..İndex oluşturmak için örnek yazım şekli şöyledir:  
 
CREATE indeks-tipi INDEX indeks-ismi
ON tablo-adı(sütun ismi)  
 
Yukarıdaki örnek yazım şekline göre:
*Indeks-tipi yazan yere, UNIQUE CLUSTERED veya sadece CLUSTERED, NON-CLUSTERED şeklinde bir kelime gelebilir. Şayet herhangi bir tip belirtilmez ise, Sql Server NON-CLUSTERED olduğunu varsayar,
*Indekse verilen isim, okunabilirliği artırmak adına CLUSTERED ise CL, UNIQUE ise UCL, NONCLUSTERED ise NC şeklinde isimlendirilir,
*Tablo adı yazan yere, ilgili index'i hangi tablo üzerinde uyguluyor isek o tablonun adı gelir,
*Sütun ismi yazan yere, tablo veya view'de indekslenmesini istediğiniz sütun veya sütunların isimleri gelir.(Composite Index'de birden fazla sütun bulunur.)
 
Not: Sıralı index'ler oluşturmak mümkündür. Bunun için bildiğimiz ACS ve DESC deyimleri sütun isminden sonra kullanılır. Şayet hiçbirşey belirtmediyseniz varsayılan olarak ASC deyimi kullanılmış gibi işlem yapılacaktır.  
 
Anahtar Not: Sql Server'da hesaplanmış sütunlar(Computed Columns) üstünde de normal bir sütunmuş gibi Indeks tanımlaması yapılabilir. Ancak hesaplanmış sütunun deterministik bir ifade ile elde edilmil olması gerekir.
 
-----------------------------------------------------------------------
 
Oluşturduğumuz bir objenin yazım şeklini görmek istiyor isek sp_helptext sistem stored prosedüründen yararlanıyor idik aynı şekilde tablo üzerindeki indexleri görebilmek için de:
 
sp_helpindex tblEmployee  sorgusu üzerinden hangi kolon üzerinden index yarattı isek bunu rahatlıkla görebiliriz.  
 
Index silmek için ise:
 
drop index tblEmployee.IX_tblEmployee_Salary şeklinde bir sentaks(yazım şekli) kullanmamız gerekir. Buradaki yazım şekline dikkat ederseniz ilk başta tablo adını kullandık.
Bu işlemlerin hepsini tek satır kod yazmadan grafik arayüzünden de kolaylıkla yapabilirsiniz..  
 
Serinin bir sonraki bölümünde görüşmek üzere.
 
 
 
 
 
 
 
 

Trigger Serisinin İlk Bölümüne Buradan Ulaşabilirsin

Trigger'lar özelleşmiş bir tür stored prosedürlerdir(SP).