MySQL の DEPENDENT SUBQUERY について
MySQL のサブクエリは重い。という記述をしばしば目にするが、実際に遅い場合があるのは「DEPENDENT SUBQUERY」である。
DEPENDENT SUBQUERY とは
いわゆる、相関サブクエリというやつである。サブクエリ内で外部のテーブルと結合するようなときがこれに該当する。
SELECT * FROM table1 t1 WHERE t1.id in (SELECT id FROM table2 t2 WHERE t2.id = t1.id); -- サブクエリ内で t1.id を使用している
雰囲気こんな感じ。
代替策
JOIN を使う。
SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id;