InnoDB での MySQL LIKE クエリの最適化
末尾にワイルドカード ('%...') を付けた LIKE 演算子を使用して InnoDB テーブルをクエリする場合
インデックスの制限について
InnoDB のインデックスは通常、文字列の先頭から構築されます。 LIKE 'whatever%' のようなクエリでは、これらの開始ベースのインデックスを効率的な検索に利用できますが、LIKE '%whatever%' クエリではそれができません。
これは、末尾のワイルドカードによって先頭のアンカーが削除されるためです。検索語を文字列内で「フローティング」にします。その結果、フィールド全体を検索する必要があり、開始ベースのインデックスが無効になります。
解決策: 全文インデックスの使用
LIKE '% のような '浮動' 検索の場合... クエリ、全文インデックスが推奨されます。フルテキスト インデックスはこのタイプの使用法に最適化されており、文字列内のワイルドカードの位置に関係なく効率的な検索が可能です。
InnoDB インデックスとフルテキスト インデックス
歴史的に、InnoDB はそうではありませんでした。全文インデックスをサポートします。ただし、バージョン 5.6.4 の時点では、InnoDB はフルテキスト インデックス作成を完全にサポートしています。これにより、効率的な全文検索を楽しみながら、InnoDB のトランザクションと一貫性の両方の利点を利用できるようになります。
以上がここでは、InnoDB の末尾ワイルドカードを含む `LIKE` クエリに関連する課題と解決策に焦点を当てた、記事の本質を捉えた質問ベースのタイトルをいくつか示します。 * **最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。