Başka bir şirketten devraldığımız bir uygulamanın yavaş bir bölümünü, bir alt sorgu yerine bir iç birleşim kullanmak üzere yeniden düzenledim:
WHERE id IN (SELECT id FROM ...)
Yeniden düzenlenmiş sorgu yaklaşık 100 kat daha hızlı çalışır. (~ 50 saniye ila ~ 0.3) Bir iyileşme bekledim, ama neden bu kadar sert olduğunu açıklayabilir mi? Where yan tümcesinde kullanılan sütunların tümü dizine eklenmiştir. SQL sorguyu her satırda bir kez nerede yan tümcesinde çalıştırıyor mu?
Güncelleme - Sonuçları açıklayın:
Fark "where id in ()" sorgusunun ikinci bölümünde -
2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where
vs 1 endeksli sıra ile birleşim:
SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index