MySQLではIN句とサブクエリの組み合わせはインデックスが効かない #mysql

概要

タイトルそのまま。

MySQLは仕様として * サブクエリを含むSQLは外側から先に実行される * IN句とサブクエリの組み合わせは内部的にEXISTSに変換する

対策

  • サブクエリの使用を避ける
  • JOINに書き換える
  • サブクエリを切り出してSQLを組み立てる(2回SQLを発行する)

参考

MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!? | アライドアーキテクツ エンジニアブログ