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;

参考文献

nippondanji.blogspot.com

www.amazon.co.jp

fulfillment-c.com