17/09/2017 - MYSQL
Bu yazı size sadece veritabanında ne zaman index yaratılıp ve ne zaman yaratılmayacağına dair basit bilgiler veriyor. Her ne kadar aşağıdaki tavsiyeler çoğunlukla kabul edilsede, "iyi" şeyleri gereğinden fazla yapmak "kötü" sonuçlara yol açabilir, bu nedenle yarattığınız indexlerin beklendiği gibi işe yarayıp yaramadıklarını kontrol etmek sizin sorumluluğunuzdur.
WHERE, JOIN, ORDER BY, GROUP BY ve HAVING bentlerinde kullanılacak olan alanları indexleyin.INDEX(name, surname)), aynı alanları tekrardan tek bir index yaratmak için kullanmayın (örnek: INDEX(name) veya INDEX(surname)).integer, date, timestamp vs.Primary Key ve Foreign Key alanları.Yeni bilgi ekleme ve yenileme işlemlerinde, tabloda bulunan indexler performans kaybına yol açarlar, çünkü her veri yenileme işleminde indexlerin tekrar yenilenmeleri gerekir, bu nedenle sadece WHERE, JOIN, ORDER BY, GROUP BY ve HAVING bentlerinde kullanılacak olan alanları indexleyin. Bir alanı körü körüne sadece "iyi index" adayı olarak gösterildiği için indexlemeyin. Örnek: timestamp alanı iyi bir index alanıdır, çünkü yüksek derecede benzersizlik gösterir. Ama eğer bu alanı sorgularınızda kullanmayı düşünmüyorsanız, indexlemeyin.
Size The Slow Query Log ve EXPLAIN tekniklerini, sorgularınızın performanslarını kontrol etmeniz için kullanmanızı tavsiye ederim.