データベースでは、インデックスは通常、where句で定義されたものを探すときにパフォーマンスを向上させるために使用されます。ただし、一部のテキストのフィルタリングに関しては、 WHERE TextColumn LIKE '%searchstring%'
のようなものを使用する 通常のデータベースインデックスの動作は、列の一部だけでなく、列の「コンテンツ全体」との一致に最適化されるため、検索は遅くなります。具体的には、ワイルドカードを含むLIKE検索では、どのような種類のインデックスも使用できません。
以下のコメントで述べられているように、MySQLにはMATCH () ... AGAINST
が必要です。 全文索引内を検索するための構文。ところで、これはデータベースベンダーによって異なります。 MS SQLでは、CONTAINS
を使用できます したがって、他のデータベースもサポートする予定がある場合は、このことに注意してください。
フルテキストインデックスは、これらのタイプの列用に最適化されているため、通常のテキストに適しています。非常に単純化:テキストを単語に分割し、テキスト全体ではなく単語にインデックスを作成します。これは、特定の単語を検索する際のテキスト検索ではるかに高速に機能します。