私は自分のサイトのメッセージ部分の検索機能を構築しており、9,000,000 行を少し超えるメッセージ データベースがありsender
、subject
、 、message
フィールドにインデックスが付けられています。(例) のように、クエリで LIKE mysql 句を使用することを望んでいました
SELECT sender
, subject
, message
FROM Messages
WHERE message
LIKE '%EXAMPLE_QUERY%';
結果を取得します。残念ながら、先頭のワイルドカードが存在する場合、MySQL はインデックスを使用しません。これは、検索クエリがメッセージのどこにでも表示される可能性があるために必要です (これがワイルドカードの仕組みですよね?)。クエリは非常に遅く、煩わしい 50% ルールのため、フルテキスト インデックスも使用できません (それだけを除外する余裕はありません)。likeと2つのワイルドカードを使用してクエリを最適化する方法はありますか? どんな助けでも大歓迎です。