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;
 

 

この件で思ったのは、チューニングはあきらめたらそこで終了だということ。

ある程度改善されたので、そこで自己満足で対応を終了していたが、

レビューしてもらった結果、上記の方法で今回はさらに劇的に改善された。

 

なぜ、自分でこの解を導き出せなかったのか

自責の念のため、メモをのこしておく、。