次のようなサブクエリの代わりに内部結合を使用するために、別の会社から継承したアプリケーションの遅いセクションをリファクタリングしました。
WHERE id IN (SELECT id FROM ...)
リファクタリングされたクエリは、約100倍速く実行されます。(〜50秒から〜0.3)改善が期待されていましたが、それがそれほど劇的だった理由を誰かが説明できますか?where句で使用される列にはすべてインデックスが付けられました。SQLはクエリをwhere句で行ごとに1回実行しますか?
更新 -結果の説明:
違いは「where id in()」クエリの2番目の部分にあります-
2   DEPENDENT SUBQUERY  submission_tags ref st_tag_id   st_tag_id   4   const   2966    Using where
vs結合された1つのインデックス付き行:
    SIMPLE  s   eq_ref  PRIMARY PRIMARY 4   newsladder_production.st.submission_id  1   Using index