SQLアンチパターンを読み始めたので、1つ1つ書いてのメモです
目的
- 全文検索を行う
SQL について
- SQL(および SQL の背後にあるリレーショナル理論)の原則の 1 つは、列の値がアトミックであること
- 値が別の値と比較できること
- 部分文字列の比較はSQLにとって非効率
アンチパターン
- パターンマッチ述語を使用する
- LIKE
- 正規表現(MySQL は日本語に対応していない)
- テーブルスキャンになる(インデックスは使えない)のでパフォーマンスの低下
用いてもいいパターン
- 使用頻度が極めて低い
- 単純なケース
解決策
- 適切なツールを使用する
- SQL の代わりに専用の全文検索エンジンを使うこと
- ベンダーごとに全文検索エンジンがある
- サードパーティのもある
まとめ
問題を解決するために、必ずしも SQL を使う必要はありません。
感想
全文検索は、専用のを使いましょう!