Sql Komutlarından İndex
Sql komutlarından index oluşturma ve faydaları, myadminde gösterimi
İndeks Oluşturmanın Faydası :
Bir indeks, veri tabanı ortamında bir tablo ya da bir view gibi bir nesnedir.
ilişkili olarak kullanıldığı tablo ya da view deki satırların, indeksleme 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 ( SELECT komutu ile ) işlemi çok daha hızlı biçimde gerçekleştirecektir.
İndeks Yaratma :
SQL 'de bir tablo ile ilişkili olarak bir indeks yaratmak için gerekli komut CREATE INDEKS komutudur.Komutun yazılış biçimi aşağıdaki gibidir :
CREATE INDEX indeks adı
ON tablo adı ( kolon adı1, koon adı2,���kolon adı (n)) ;
İndeksleme artan ya da azalan şekilde olabilir. A�dan Z�ye nümerik olarak küçükten büyüğe şeklindedir. Azalan ise bunun tam tersidir. Hiçbir özel sözcük kullnılmazsa indeksleme artan sayılır ya da alan adının yanında ASC sözcüğü kullanılırsa artan sıralama yapılacağı anlaşılır. Herhangi bir DESC sözcüğünün kullanılması ise azalan sıralama yapılacağı anlamına gelmektedir.
Tek Bir Alana Göre Artan Sırada İndeksleme :
İşletmede çalışan personeli brüt maaşlarına göre artan sırada listelemek istersek, brüt alanına göre bir indeks oluşturmalıyız.
CREATE INDEX pers_maas
ON personel (brüt) ;
Index created 127 rows
127 satırlık personel tablosu ile ilişkili olarak brüt kolonuna indeks anahtarı olarak kullanılan pers_maas adlı indeks oluşturuluştur. Bu durumda
SELECT *
FROM personel ;
Şeklindeki listeleme komutu sonucunda personel tablosundaki tüm personel brüt maaşlarına göre listelenecektir.
Tek Bir Alana Göre Azalan Sırada İndeksleme :
İşletmede çalışan personeli brüt maaşlarına göre azalan sırada listelemek istenirse brüt alanına göre aşağıdaki gibi indeks oluşturmak gerekir :
CREATE INDEX pers_maas
ON personel (brüt DESC) ;
Birden Fazla Alana Göre İndeksleme :
İşletmedeki personelin öncelikle adlarına göre aynı adda 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 kullnılmalıdır :
CREATE INDEX p_ad_soy_m
ON personel ( ad, soyad ,brüt ) ;
Bu durumda
SELECT *
FROM personel ;
Komutu sonucunda sıralanmış tablo görülecektir.
Bir tablo , seçilen bir sütuna göre indekslenirken indeksleme alanı olarak seçilen sütundaki verilerin tekrarlanmasına izin verilmesi istenmiyorsa indeksleme yapılırken , CREATE INDEX komutu içinde UNIQUE sözcüğü kullanılır.
CREATE UNIQUE INDEX pers_sicil
ON personel ( sicil );
Mevcut Bir İndeksin Silinmesi :
Tablo silinmeksizin , o tablo üzerinde oluşturulan indeksin silinmesi içinse DROP INDEX komutu kullnılmalıdır.
DROP INDEX pers_in ;
komutu ile
INDEX DROPPED
Mesajı alınacaktır.
CREATE INDEX (index adı ON tablo adı (alan adı))
Örnek: CREATE INDEX PERSON_IDX ON PERSONEL (ADI,SOYADI);