Sql Komutlarından İndex Oluşturma Ve Faydaları, Myadminde Gösterimi

Index Oluşturmanın Amacı

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, indexleme 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, indexlenmiş 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.

 
Index Yaratma

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

      CREATE INDEX index adı

      ON tabloadı (kolonadı 1,kolonadı 2,....,kolonadı n );

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

 
Tek bir alana göre artan sırada indexleme

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

      Index created 127 Rows 
 

127 satırlık personel tablosu ile ilişkili olarak maas alanına index anahtarı olarak kullanılan pers_maas adlı index  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 indexleme

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

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

 

      Index 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  65000000 .......

 

      15372     Ali           Cenker  34000000 .......

 

      4246     Ali           Cenker  26000000 .......

 

      16656     Ali           Şener  12000000 .......

 

      7216     Beril     Arkan  18000000 ....... 

      .......     .......  .......  .......

şeklinde olacaktır.


VeriTabanından Index Kaldırmak

•    Microsoft SQL Server içinde tutulan tablolar, SQL tarafından numaralandırılırlar ve daha sonra veri yapısında güncellemeler yapıldığı sırada SQL bu tabloları alfabetik sıraya göre sıralama yapar.

•    Örneğin : Bu tabloda 3 kayıt girilmekte;

•    SQL bu kayıtların başına "No" sütunu ekliyor ve sıralıyor.

  Sql Komutlarından İndex Oluşturma Ve Faydaları, Myadminde Gösterimi    

•    SQL bu kayıtların indexini kendisi bizim göremediğimiz alanda oluşturur.Sıralamasını da İndex mantığına göre alfabetik yapar.

 
Sql Komutlarından İndex Oluşturma Ve Faydaları, Myadminde Gösterimi

•    Burada SQL de gerektiği zamanlarda SQL'in oluşturduğu indexlerin silinmesi istenebilir. Indexleri silmek için Vega Yazılımın veri tabanı yönetimi için hazırlanmış VegaShell programının kurulu olduğu dizin içerisinde "AddOns" dizini içinde "DBManager.exe" ile gerekli indexleri silebiliriz.

•    DBmanager çalışsıktan sonra kullandığımız veritabanını veritabanları alanından seçiyoruz. Ardından SQL komutları kısmına geçerek DROP INDEX firma kodu, dönem kodu ve tablo yazıyoruz, araya Nokta(.)simgesini koyarak devamına SQL tarafından oluşturulan index yazılır. komut satırı yazıldıktan sonra "F5" tuşuna basınca seçtiğiniz tablodaki, adı, numarası ile yazdığınız index silinir.

•    Örneğin: Firma Kodu: F0001 - Dönem Kodu: D0001 - Tablo: TBLYANSIT (F0001D0001TBLYANSIT); Index alanı : _WA_SYS_ORAN_ - Index No: 03C67B1A (_WA_SYS_ORAN_03C67B1A);  bu bilgilere ait olan indexi silmek için aşağıdaki komutu yazıp "F5"e basacaksınız ve index silinecek.

Örnek:    

DROP INDEX F0001D0001TBLYANSIT._WA_SYS_ORAN_03C67B1A
 

Yorumunuzu Ekleyin
Sql Komutlarından İndex Oluşturma Ve Faydaları, Myadminde Gösterimi Yorumları +2 Yorum
  • yıldız
    1
    yıldız
    ÇOK GZL OLMUŞ ELİNİZE SAĞLIK
    26 Mart 2011 12:25:19, Cumartesi
  • aloık
    1
    aloık
    çok güzel anlatım . teşekkürler
    19 Ekim 2020 18:55:50, Pazartesi


Yükleniyor...
Yükleniyor...