Bir bilgisayar mühendisi için programlama dili, öğrendiklerini sınadığı, deneyler yaptığı bir laboratuardır ve mühendisler deneylerini, kestiremedikleri sonuçları gözlemlemek için değil, öngördükleri sonuçları doğrulamak için yaparlar...
MySql Veritabanında Index Oluşturma
Az sayıda kayıt tutan veritabanlarında önemsiz bir konu olsa da milyonlarca kayıt içeren veritabanları için oldukça önemlidir. İndexler, veritabanında bir sütun içerisindeki verilerin sıraya dizilmesini sağlayarak verilere ulaşılırken zamandan tasarruf edilmesini sağlar. İndexlerin işlevi, sözlükte kelimelerin harf sırasına dizilerek kelimelere ulaşım hızının arttırılmasına benzetilebilir.
İndexler arasında en çok bilinen ve kullanılan 3 indexten bahsedeceğim. (Zaten hepsi 5 tane. Diğer ikisi; full-text, spatial)
Index
Verilerin, benzersizlik kaygısı olmaksızın erişim hızını arttırmaya yönelik olarak düzene/sıraya konmasını sağlar.
create table eng_tur (kelime TEXT, anlami TINYTEXT, Index(kelime))
Primary Key (Birincil Anahtar)
Primary key, tablodaki satıra erişimde birincil anahtar rolünü üstlenir. Her tablonun sadece bir tane primary keyi olabilir ve bu değer tamsayı tipindedir. Bu değer asla boş(null) olmaz. Boş olamayacağı belirtilmese("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.
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ı tipinde olur.
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 veya update 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. Hangi tabloda hangi index türünün yaratılacağına karar verilirken iyi düşünülmelidir. Genelde indexler "where"den sonra gelen sütunlar için oluşturulur. Çünkü where, bir tür arama deyimi olarak düşünülebilir...
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.
Yorum/Görüş Bildir