一致演算子を使用して検索すると、列REGEXP
のインデックス スキャンを使用してコンテンツを検索することはできません。title
1 つの列しか取得していないため、インデックスをオンにすることでメリットが得られる可能性がありtitle
ます。まだ行っていない場合は試してください。
REGEXP は、最速のテキスト マッチング アルゴリズムでもありません。試すことで利益が得られるかもしれません
SELECT title
FROM links_forum
WHERE title LIKE '%The grey%'
AND title REGEXP (your big regular expression)
これでもインデックスの使用は無効になりますがtitle
、検索用語の最も重要な部分であると思われる列をより高速に検索できます。LIKE
より少し速いですREGEXP
。
もう 1 つの選択肢: テキストの大きな塊からビデオ メディアと思われるものを検索する代わりに、ビデオ メディアのタイトルを含む別のテーブルを作成することを検討してください。
具体的には、links_forum_id 列と title 列を含む、links_forum_media_title テーブルを作成できます。次に、エントリを挿入するとlinks_forum
、この特定のテーブルにもエントリが挿入されます。次に、そのテーブルに (title, links_forum_id) インデックスを作成し、それを使用してタイトルを検索できます。それはプログラミングの変更です。しかし、それはあなたのパフォーマンスの問題を決定的に解決します. このアプリケーションをスケールアップすることを計画しているなら、それは良いことです。
FULLTEXT 検索を試すことができます。しかし、ある種のメディア フォーマット コード (cam、ts、divx) を探すこの種のアプリケーションには適していません。