Saya refactored bagian lambat dari aplikasi yang kami warisi dari perusahaan lain untuk menggunakan gabungan dalam daripada subquery seperti:
WHERE id IN (SELECT id FROM ...)
Permintaan refactored berjalan sekitar 100x lebih cepat. (~ 50 detik hingga ~ 0,3) Saya mengharapkan peningkatan, tetapi adakah yang bisa menjelaskan mengapa itu sangat drastis? Kolom yang digunakan di mana klausa semuanya diindeks. Apakah SQL mengeksekusi query di mana klausa sekali per baris atau sesuatu?
Perbarui - Jelaskan hasil:
Perbedaannya ada di bagian kedua dari kueri "di mana id di ()" -
2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where
vs 1 baris yang diindeks dengan gabungan:
SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index