Az sayıda kayıt tutan veritabanarında önemsiz bir konu olsa da, milyonlarca kayıt içeren veritabanları için oldukça önemlidir. Indexler, veritabanında, bir sütun içerisindeki verinin belli bir sıraya göre dizilmesini sağlar. Böylece o veriye ulaşırken, zamandan tasarruf edilir. Genelde işlevi, sözlükte kelimelerin harf sırasına konmasına benzetilebilir.
Indexlerin farklı türleri vardır. En çok bilinen ve kullanılan 3 tanesini yazacağım.(Zaten hepsi 5 tane; diğer ikisi; full-text, spatial araştırılabilir...)
Index Benzersiz olma gibi bir kaygı bulundurulmadan amaç; verileri düzene/sıraya koymaktır. Örnek :
create table eng_tur (kelime TEXT, anlami TINYTEXT, Index(kelime))Primary Key (Birincil Anahtar) Her tablonun sadece bir tane primary keyi olabilir ve bu değer tamsayı tipindedir. Primary key tablodaki satıra ulaşmada birincil anahtar rolünü üstlenir. Asla NULL(boş) olmaz. Boş olamayacağı belirtilmezse("NOT NULL" ile) bile, mysql arkaplanda, onu boş olamayacak şekilde ayarlar. Primary indexler otomatik artar hale getirilebilir. Bunun için "AUTO_INCREMENT" kullanılır. Örnek :
create table yorumlar (id MEDIUMINT NOT NULL AUTO_INCREMENT, isim TINYTEXT, yazi TEXT, PRIMARY KEY (id))UNIQU (Benzersiz) Bir diğer index tipi de "UNIQU". Adından da anlaşılacağı gibi, bu tipte indexlenmiş sutünda birbirine eşit iki değer bulunmaz. Primary key ile aralarındaki fark şudur; unique, NULL olabilir.(İstisna; sütun içerisinde birden fazla NULL değer bulunabilir.) Ama primary key null değer alamaz. Ayrıca Unique index herhangi bir veri tipinde olan tabloda oluşturulabilir. Ancak primary key mutlaka tamsayıdır. Örnek :
create table kisiler (TCKimlikNo INT(11) NOT NULL, isim TINYTEXT, soyisim TINYTEXT, Unique(TCKimlikNo)) Burada unutulmaması gereken, indexlerin "select" gibi okuma komutlarını kat kat hızlandırırken, "insert" gibi yerleştirme veya güncelleme komutlarını yavaşlattığıdır. Çünkü normalde sona eklenecek olan veri, index yaratılmış iken bulunması gereken sıraya konmak zorundadır. Bu yüzden hangi tabloda ne tip index yaratılacağına karar verilirken iyi düşünülmelidir. Genelde indexler "where"den sonra gelen tablolarda oluşturulur. Çünkü where, bir tür arama deyimi olarak düşünülebilir...
Okunma Sayısı: 1350
Yayınlanma Tarihi: 22 Haziran 2009 Pazartesi - 19:42
Anahtar Kelimeler: index, mysql, veritabanı, sıralama, hızlı, sorgu
Yorumlar ( 2 )
Bakhtiyar#1
14/02/2010, 14:56
Selam ben size Azerbaijandan yaziyorum benim chatimda hiz chox zaifladi ogrendim ki msql de index olusturmak lazim ama 3-gundur ki okuyorum biturlu ogrenemedim su index olusturmayi. sizden bir Rica etsem benim msql bir index olustura bilirmisiniz ben msql sizin emaile gondere bilirim ayni yontemle duzeltdikden sonra sizde bana. Eger bu iyiliyi yapsaniz zise chok minnettar kalirim
Hüseyin Atasoy#2
14/02/2010, 17:34
E-mail adresimde sizden gelen bir mail yok. Tam olarak hangi yönetim sistemini kullanıyorsunuz bilmiyorum ama yukarıdaki örnekleri veritabanı yapınıza uyarladıktan sonra yönetim sisteminizin sql sorgu sayfasına yazmalısınız. Yalnız problem, index oluşturulmamış olmasından kaynaklanmıyor olabilir. Ve indexi oluşturacağınız sütunun tipi de önemli.
Dediğiniz gibi mail atarsanız elimden geleni yaparım...
Yorum/Görüş Bildir