• uzun bir yazıyı, bir database'i, kısaca çoook uzun olabilecek bir metin/metin parçaları bütünü/vbdeki (bundan sonra hede diyeceğiz) önemli veya bütün kelimelerin hededeki yerlerini düzenli bir sistemde toplamak eyleminin ingilizcesi, türkçesi indekslemekdir. bu işin yapılma nedeni ileride bu hede üzerinde yapılacak bütün aramaları hayvanlar gibi hızlandırmasıdır. ekşi sözlüğün database'inde indeksing olmasaydı, hayvanlar gibi arayamazdık, okumak istediğimiz bir başlık 10 ayda gelirdi.
  • efendim şimdi bu indexing* kavramı veritabanı sunucularinda * sıklıkla kullanılır.amacını şöyle anlatabilirim:elinizde kalın bir kitap var ve siz ilgili konunuzu bulmak istiyorsunuz normalde bu çok uzun bir işlem çünkü tek tek*aramak durumunda kalırsınız ama kitabın bir yerine* bir fihrist eklerseniz insanlar fihriste bakarak sayfa kaça gideceğini bilir ve aradığına daha kolay ulaşabilir.

    veritabanlarında indekseleme genelde milyonluk kayıtlarımız varsa tercih edilen bir yöntemdir.görece az sayıda kayıt için gerekli değildir.çünkü index oluştumanın ilk önce oluşturma maliyeti vardır daha sonra ise hangi sütüna göre index oluşturulmuşsa o sütüna göre genelde btree tipinde yeni veriler yaratılıp veritabanının farklı bir yerinde tutulur.ben örneğin bunu postgresql 9.4 sürümünde 50000000(elli milyon) luk kayıt içeren bir database* için oluşturduğumda index oluşturmak için tam olarak 36 dakika 54 saniye geçti ve yaklaşık 5.5 gblık bir alan daha oluşturuldu.daha önceden veritabanım 6 gb büyüklükte iken indeksten sonra 11.5 gb büyüklüğe ulaştı.yaptığım işin analizini yapacak olursam
    1-)oluşturma zamanı muazzam derecede büyük
    2-)ekstradan tablo büyüklüğüne yakın tablom büyümüş oldu.

    ne kazandığıma bakınca daha önce basit bir select * from tablom where x=y gibi ifadem 65 sn sürerken index oluşturduktan sonra bu sürenin 0.9 sn mertebelerine indiğini gördüm.bu da muazzam bir performans artışı demek çünkü hiçbir kullanıcı bir sistemde birkaç sn sonrasını beklemek istemez.anında yanıt dönmek durumundayız.bazı durumlarda performans artışı sağlayabilmek için indeksleme zorunlu olmaktadır.işin bir diğer bakış açısı ise tablonun sadece o alanına göre yapılan sorgular için bizim indeksleme mekanizmamız çalışır.başka bir sütün için yapılan sorgular eski hali ile çalışmaya devam eder.burada eğer başka bir sutun için de indeksleme isteniyorsa aynı oluşturma ve tablo büyümesi artışına katlanmak durumundayız.bu durum her bir yeni indeksleme de kendini tekrar edecektir.modern ilişkisel veritabanlarının hepsi bu kavramı destekler ve benzer mantıkla çalışır.lakin her yiğidin yoğurt yiyişi farklı olabildiğinden kelli uygulanması* azıcık farklı olabilir.genelde de bu farklılığı sentaks* oluşturur.misalen ben size postgresql in index oluşturma sentaksını vereyim örnek olsun,neye benzediği belli olsun.sizin amacınız hede tablosunun höde alanına index atmak ise bu şöyle yapılır:
    create index indeksinizin_adı on hede(höde) ; #gibi

    yazımı gayet kolaydır lakin milyonluk tabloya index atmaya çalışırsanız biraz beklemek gerekecektir.çünkü bu sıırada veritabanınız eldeki tablo verilerini belli bir mantağa göre* sıralayacaktır.bunun olabilmesi için ise tablonuzun tüm verileri okunup işlenmeli. işte malum süreyi bu yüzden bekliyoruz.indeksi silmek ise daha da kolay:
    drop indeksinizin_adı ;
    demeniz yeterlidir.şimdi tabi bir de unique indeks olayı varki oraya hiç girmeyeceğim ama var olduğu bilinmelidir.şu iki şeyi de aklımızdan çıkarmamalıyız :
    1-indexli tablolar indexsiz tablolardan daha geç güncellenir. bu yüzden sadece arama işlemlerinin yoğun olduğu yerlerde indexleme olayını kullannak akıllıca bir hareket olur.
    2-bir tablo silindiğinde üzerindeki bütün indexlerde silinir.
  • clustered, nonclustered olarak ikiye ayrılabilir.

    clustered: veriler hafızada clustered index’e göre sıralı bir şekilde tutulur. tabloda bir tane olabilir.

    nonclustered: verilerin adresleri clustered index’e göre sıralı bir şekilde tutulur. tabloda birden fazla bulunabilir .

    tabloya index eklemek okuma süresini düşürür ancak yazma süresini artırır.
hesabın var mı? giriş yap