MySQLの重いサブクエリを解決する方法

MySQLの重いサブクエリを解決する方法

EC-CUBE内の話なんだけどもSQLを完全に書き直してしまっているので一般的なMySQLの話です。

参考サイトはこちらです
漢(オトコ)のコンピュータ道: Using filesort

商品検索をする場合に必要なtableが3つあり、すべてjoinした状態で検索をするSQLを書いてます。

大体こんな感じのクエリ

ところが商品数が増えてくると『Using temporary; Using filesort』の重い処理がのしかかってきました。。

この時点で15000商品の登録で画面表示に8秒ほど、3秒ルールも越えてるしどうするかーと検索した結果

LIMIT 15000 の1行を加えただけです(商品数をとってきて突っ込んだ)

これだけで表示は3秒に!これ以上の量でもいけるのかは要調査ですが1行足しただけで劇的に変わったので記録ですっ

と、いうわけでサブクエリ内が重いなーと感じたらまずはlimitを入れてみることをオススメします

コメントを残す