Index Yapısı

Sql komutlarından index oluşturma ve faydaları, myadminde gösterimi

İNDEKS OLUŞTURMA ve KULLANMA

İndeks Oluşturmanın Amacı

Bir indeks, 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, indeksleme alanı (key field (anahtar alan)) olarak kullanılan kolondaki verilere göre sıralanmış biçimde işleme sokulmasını (listeleme ya da arama işlemi) sağlar.

                Bir tablo, indekslenmiş ise, bu tablo içinde gerçekleştirilecek bir arama (search) ya da koşullu listeleme (SELECT komutu ile) işlemi çok daha hızlı biçimde gerçekleştirilebilecektir.

İndeks Yaratma

                SQL’de bir tablo ile ilşkili olarak indeks yaratmak için gerekli komut CREATE INDEX komutudur. Komutun yazılış biçimi aşağıdaki gibidir:


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

              İndeksleme 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 indeksleme 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 indekslemenin azalan olacağını gösterir. Komutun yazılış biçiminden anlaşılacağı gibi, aynı anda, birden çok alana göre indeksleme de yapılabilir.


Tek bir alana göre artan sırada indeksleme

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

 
CREATE INDEX pers_maas
ON Personel (maas);
Index created 127 Rows 
 

                127 satırlık personel tablosu ile ilişkili olarak maas alanına indeks anahtarı olarak kullanılan pers_maas adlı indeks oluşturulmuştur. Bu durumda;


SELECT *
FROM Personel; 
 

şeklindeki listeleme komutu sonucunda, personel tablosundaki tüm personel, maaşlarına göre sıralı olarak listelenecektir.

Tek bir alana göre azalan sırada indeksleme

İşletmede çalışan personeli maaşlarına göre azalan sırada (yüksek maaştan düşük maaşa doğru) listelemek istersek, maas alanına göre aşağıdaki şekilde oluşturmak gerekir.


CREATE INDEX pers_maas
ON Personel (maas DESC);

 

Birden fazla alana göre indeksleme

            İş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)
 

Bu durumda

SELECT *
FROM Personel; 
 

komutu sonucunda, aşağıdaki şekilde sıralanmış tablo görüntülenecektir.


       sicil        ad         soyad              maas
        11117       Ahmet       Caner           15000000               
        247         Ahmet       Deniz           27000000               
        645         Ahmet       Zoran           12000000               
        3871        Ali         Cenker          26000000               
        15372       Ali         Cenker          34000000               
        4246        Ali         Cenker          65000000       
        16656       Ali         Şener           12000000       
        7216        Beril       Arkan           18000000
 

Burada, kolayca görüleceği gibi personel öncelikle adı alanına göre sıralanmış (Ahmet, Ali, Beril) aynı ada sahip olanlar soyadlarına göre sıralanmış (Ahmet ismindeki kişilerin soyadları olan Caner, Deniz, Zoran sıralaması gibi), hem ad hem de soyadları aynı olanların sıralanmasında ise maas alanı dikkate alınmıştır.


İndeks komutu

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

şeklinde yazılsa idi, tablodaki değerler


       sicil        ad         soyad              maas
        11117       Ahmet       Caner           15000000               
        247         Ahmet       Deniz           27000000               
        645         Ahmet       Zoran           12000000               
        3871        Ali         Cenker          26000000               
        15372       Ali         Cenker          34000000               
        4246        Ali         Cenker          65000000       
        16656       Ali         Şener           12000000       
        7216        Beril       Arkan           18000000
 
Kaynak : Burak Taş

Yorumunuzu Ekleyin

Temel Sql Komutları
Yükleniyor...