[MySQL] FIND_IN_SETはインデックスが効かない

有名な話だと思いますが、FIND_IN_SETはインデックスが効きません。 MySQLのFUNCTIONで渡した値にマッチする物に処理をしたかったのですが、IN (xxxx)が使えません。 結果FIND_IN_SETを使っていたのですが、データの多いテーブルの対する処理にかなり時間がかかっていました。 結果SQLの実行がタイムアウトになってしまったので、対策を行う必要がありました。 ### 対策 今回の物は、バッチで処理する物だったのでworkテーブルにデータを入れて、そのテーブルとJOINする事で同様の処理を実現しました。 数分かかっていたのが、4秒で終わりました。 初めからそうしておけば良かった。 インデックスが効かないSQLは早めにテコ入れが必要です。

0 件のコメント :

コメントを投稿