ホームページ >データベース >mysql チュートリアル >MySQL で複数列の LIKE クエリを高速化するにはどうすればよいですか?
MySQL の複数の列に対する LIKE クエリの高速化
クエリで頻繁に SELECT ... LIKE '%text%' クエリが発生した場合複数列の MySQL テーブルの場合、インデックス作成によってパフォーマンスが向上するのではないかと疑問に思うのは自然なことです。残念ながら、左から始まる文字を参照することで機能するインデックスは、ワイルドカードを使用して指定されたテキストの前にある文字を変更できるため、LIKE '%text%' クエリを支援できません。
インデックスに依存する代わりに、MySQL はインデックスを利用することをお勧めします。 MyISAM テーブルの全文検索 (FTS)。 FTS はテキスト列内の単語にインデックスを付け、ターゲット テキストが列内の任意の場所にある場合でも効率的な検索を可能にします。
非 MyISAM テーブルの代替オプション
次のテーブルの場合MyISAM ベースではないため、カスタム インデックス システムを実装できます。実際のテーブルに単語と対応する ID を格納するインデックス テーブルを作成します。このアプローチでは、LIKE '%text%' クエリを個々の単語検索に分解することで効率的な検索が可能になります。
ディスク使用量とパフォーマンスへの影響
FTS インデックスは追加の消費量を消費します。従来のインデックスと比較したディスク容量。ただし、レコードの挿入と削除は、FTS インデックスのパフォーマンスに大きな影響を与えません。
更新: InnoDB テーブルの全文検索
MySQL 5.6 以降、全文検索機能は InnoDB テーブルでも利用でき、クエリの要件に合わせた高性能の検索ソリューションを提供します。
以上がMySQL で複数列の LIKE クエリを高速化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。