mabots' blog

知のレバレッジを最大化せよ (旧はてなダイアリーから移転しました。)

MySQLでREGEXPを使用するとindexを使用しなくなる、走査件数が全件になるケース

MySQLREGEXPをWHERE句に使用するとindexを使用しなくなり、かつ、走査件数が全件になってしまうケースがあってはまっていました。よくつかう画面とかだと大変。

回避手段としては、

  • つかわない
  • LIKEとか結合条件とか他の絞込条件とかである程度走査件数を絞り込んだ上で、REGEXPをあとから適応するようなオプティマイザの挙動を確認する
  • サブクエリ

てかんじでしょうか