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.