CodeWriteson
Bir kere indexlediğiniz de bir daha bir şey yapmanız gerekmiyor.Veritabanı kendi indexlerini silme ve yaratmalarda o columna göre kendisi indexlerini yenileyecektir.Ne kadar çok index yarattıysanız silme ve güncellemeleriniz ona göre indexler tekrar güncelleneceği icin sorgunuz yavaşlar(ama bunu bariz hissetmezsiniz - veri milyonları geçtiyse hissedersiniz).. o yüzden doğru indexleri kullanmanız gerekir.Bunun hakkında ilgili mysql documanlarını okumanız yeterli.
İndexlerinizin doğru çalıştığını kontrol etmek istiyorsanız.Querynizi alın ve başına explain koyarak çıktısına bakın.
ornegin
explain select * from users where user_code=111 çalıştırdığımda aşağıdaki gibi bir çıktı uretti bana
1 SIMPLE users NULL const users_user_code_unique users_user_code_unique 8 const 1 100.00 NULL
burada 1 100.00 olan column isimleri rows ve filtered sutunlarıdır.Rows ve filtered alanlarından rows tabloda ne kadar satırın tarandığını gösterir.Ornegin bende localde 500 user vardı..sadece 1 satır taramış..yani elinle koyduğu gibi bulmuş..cunku users_user_code_unique indexini kullanmış..Böyle yaparak index kullanılıp kullanmadığını kontrol edebilirsiniz.Önemlidir dikkatli olmanız gerekiyor.İndex kullanmıyorsa sorgunuz possible_keys alanları boş gelir.Yani sorgu index kullanmıyor ve rows satırına baktıgınız da tablonuzun tumunu taramış olarak görürsünüz.Sayı table_count ile eşittir..
İyi calısmalar.