MySQLでJOINするテーブルに全件必要ない場合はサブクエリを活用して速度改善につなげる
JOINするテーブルに全件必要ない場合、
サブクエリをJOINするように記載することで速度改善につながることがある。
SELECT tbl_name1.col_name1 FROM tbl_name1 LEFT JOIN tbl_name2 ON tbl_name2.col_name1 = tbl_name1.col_name1 WHERE tbl_name2.col_name2 = xxx ;
や
SELECT tbl_name1.col_name1 FROM tbl_name1 LEFT JOIN tbl_name2 ON tbl_name2.col_name1 = tbl_name1.col_name1 and tbl_name2.col_name2 = xxx WHERE 1;
を
SELECT tbl_name1.col_name1 FROM tbl_name1 LEFT JOIN (select col_name1 from tbl_name2 where col_name2 = xxx ) tbl_name3 ON tbl_name3.col_name1 = tbl_name1.col_name1 WHERE 1;
この件で思ったのは、チューニングはあきらめたらそこで終了だということ。
ある程度改善されたので、そこで自己満足で対応を終了していたが、
レビューしてもらった結果、上記の方法で今回はさらに劇的に改善された。
なぜ、自分でこの解を導き出せなかったのか
自責の念のため、メモをのこしておく、。