MySQL での複数列 LIKE クエリの最適化
複数の列で LIKE 句を使用する遅い SELECT クエリは、パフォーマンスのボトルネックになる可能性があります。この記事では、インデックス作成によってクエリ速度が向上し、ディスク使用量と INSERT/DELETE のパフォーマンスに関する懸念に対処できるかどうかを検討します。
インデックスは LIKE パフォーマンスを向上させることができますか?
残念ながら、インデックスは左から始まる固定数の文字にインデックスを付けることによって機能するため、MySQL の LIKE クエリには効果がありません。 LIKE '%text%' を使用すると、ターゲット文字列の前に任意の量のテキストを置くことができ、インデックスの使用を防ぐことができます。
代替アプローチ
LIKE を使用する代わりに、 FTS (全文検索) を検討してください。 FTS は MyISAM テーブルでサポートされており、部分的な文字列一致の効率的な検索を可能にします。 MyISAM 以外のテーブルの場合、単語を ID にマップする別のインデックス テーブルを使用して独自のインデックス システムを実装すると、FTS 機能を複製できます。
ディスク使用量と INSERT/DELETE のパフォーマンス
FTS インデックス作成により、ディスク使用量が増加する可能性があります。ただし、INSERT/DELETE 操作への影響は最小限です。これは、挿入ではインデックスに新しい単語が追加されるだけであり、これはトランザクションの一部として実行されるのに対し、削除では後で削除するために単語にマークが付けられるためです。
Update
MySQL 5.6 InnoDB テーブルの FTS サポートを導入し、さまざまなテーブル タイプで LIKE パフォーマンスを向上させる堅牢なオプションを提供します。
以上がインデックス作成により MySQL の複数列 LIKE クエリのパフォーマンスが向上しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。