30 Ekim 2014 Perşembe

Veritabanı Tablo index Oluşturma / Sql Index


Veriler disk tabanlı belleklere depolanırken bloklar halinde depolanır. Disk blokları genelde bağlı listeler gibi yapılandırılmıştır; her ikisi de verinin tutulduğu kısım ve bir sonraki düğüme gösteren pointer kısmından oluşur ve her ikiside ardarda depolanmak zorunda değildir.

Sıralama yapılmamış bir alanda arama yapmak Lineer Arama yapmayı gerektirir, bu da N/2 blok erişimi gerektirir. Buradaki N tablonun disk üzerinde bulunduğu blok sayısıdır. Eğer bu alan anahtar olmayan bir alan ise arama N tane blok erişimi gerektirir.
Oysa sıralanmış bir alan olsaydı Binary Arama kullanılabilirdi, bu da log2 N blok erişimi gerektirir. Bununla birlikte anahtar olmayan alan sıralanmış ise tablonun geri kalanı duplicate değerleri bulmak için aranmaz. Çünkü alan sıralanmış olduğu için aranan değerden farklı bir değere erişildiğinde arama bitmiş demektir. Böylece performans önemli ölçüde artar.

İndex Nedir, Neden Kullanılır

Bir index, veri tabanı ortamında bir tablo ya da bir view gibi bir nesnedir ve ilişkili olarak kullanıldığı tablo ya da view'deki satırların, index alanı olarak kullanılan kolondaki verilere göre sıralanmış biçimde işlenme sokulmasını sağlar.

Bir tablo, indekslenmiş ise , bu tablo içinde gerçekleştirilecek bir arama ya da koşullu listeleme işlemi çok daha hızlı biçimde gerçekleştirecektir.

Index Oluşturma

      CREATE INDEX index adı
      ON tabloadı (kolonadı 1,kolonadı 2,....,kolonadı n );

Index artan (ascending) ya da azalan (decending) şeklinde olabilir. Artan, alfabetik olarak A’dan Z’ye nümerik olarak küçükten büyüğe şeklindedir. Azalan ise bunun tersidir. Hiçbir özel sözcük kullanılmazsa index artan sayılır ya da alan adının yanında bir boşluktan sonra ASC sözcüğü kullanılırsa bu alana göre artan sıralama yapılacak demektir.

Herhangi bir alanın adının yanında DESC sözcüğünün kullanılması ise index azalan olacağını gösterir. Komutun yazılış biçiminden anlaşılacağı gibi, aynı anda, birden çok alana göre index de yapılabilir.

Tek Bir Alana Göre Artan Sırada Index

İşletmede çalışan personeli maaşlarına göre artan sırada listelemek istersek, maas alanına göre bir index oluşturmalıyız.

     CREATE INDEX pers_maas
      ON Personel (maas);

Personel tablosunu listelersek personeller maaşlarına göre sıralı liste olarak gelecektir.

Tek Bir Alana Göre Artan Sırada Index 

    CREATE INDEX pers_maas
    ON Personel (maas DESC);

Birden Fazla Alana Göre Index

İşletmedeki personelin öncelikle adlarına göre, aynı ad da olanların soyadlarına göre, hem adı hem soyadı aynı olanların maaşlarına göre sıralanmış olarak listelenmesi istenirse aşağıdaki komut kullanılmalıdır:

 CREATE INDEX p_ad_soy_m
 ON Personel (ad,soyad,maas); 

Mevcut Bir Index’in Silinmesi 

Bir tablo üzerinde tanımlanmış herhangi bir indeks , o tablonun veri tabanından silinmesi ile otomatik olarak silinecektir. Tablo silinmeksizin , o tablo üzerinde oluşturulan indeksin silinmesi içinse DROP INDEX komutu kullnılmalıdır.

   DROP INDEX index_adi ;

Hiç yorum yok :

Yorum Gönder