質問: “ja” and (title like “%{word}%” or description like “%{word}%”) ``` ### 困ってること インデックスをどう貼るのがよいか? 下のように2つインデックスを貼っても、1SQLのこのテーブルに対しては1つしかインデックスが使われないので、おそらくindex1かindex2が使われることになるかと。 でも、titleにたいしても、descriptionにたいしてもインデックスを使われるようにしたいです。 ``` index1 (language, title) index2 (language, description) ``` ### 拡張 * 今は検索単語1だけですが、検索単語を2つ入れた場合、 検索単語1と検索単語2でのAND検索になるようにしたいです。その場合にインデックスどうはるかもちょっといいアイデアがないです。 * Railsで実装していて、kaminariというページング用のgemを使っています。できればこのgemを使ったページングを行いたいです。。ということはSQLは1個にする必要がありそう。
回答: そもそもLIKEによる部分一致検索にはインデックスは使えません。(前方一致検索であればインデックスがつかえる可能性があります。) パフォーマンス上問題があるのであれば、全文検索エンジンの導入を検討してください。DBに寄って異なるので、「MySQL 全文検索」とか「PostgreSQL 全文検索」とかで調べてみてください。