MySQLのnot exists文が重いときに書き換えた代用文
データ構造がきちんと設計されていて
indexが貼られてたりしてるといいんだろうけど、
そうでない場合、NOT EXISTS文を使うとかなり重くなることがある。
その場合は以下のようにLEFT JOIN に書き換えることで速度が改善されることがある。
SELECT tbl_name1.col_name1 FROM tbl_name1 WHERE NOT EXISTS (SELECT * FROM tbl_name2 WHERE ...) ;
を
SELECT tbl_name1.col_name1 FROM tbl_name1 LEFT JOIN tbl_name2 ON tbl_name2.col_name1 = tbl_name1.col_name1 and ... WHERE tbl_name2.col_name1 is null ;
この対応によって該当のクエリのレスポンスは10秒以上改善されたが、
当然のことながら、根本解決にはなっていないので
いつかなんとかせねば