InnoDB での LIKE '%string%' の MySQL クエリの最適化
問題の説明
InnoDB テーブルのクエリで LIKE '%string%' 句を使用すると、'keywords' 列のインデックスが無効になり、テーブル全体がスキャンされることが観察されます。
InnoDB インデックスは、インデックス付き列の先頭から始まる文字列比較用に最適化されています。ただし、LIKE '%string%' 句を使用すると、列内のどこにでも検索語を出現させることができます。このタイプのクエリでは、検索語が文字列の先頭に固定されていないため、開始ベースのインデックスを使用できません。
最適なソリューションとしてのフルテキスト インデックス
最適化するにはInnoDB のフローティング検索用語を含むクエリの場合は、フルテキスト インデックスを使用する必要があります。フルテキスト インデックスは、柔軟な文字列マッチングを可能にするため、このようなクエリを処理できるように特別に設計されています。
MySQL 5.6.4 以降へのアップグレード
フルテキスト インデックスに対する InnoDB のサポートは、 MySQL 5.6.4 で導入されました。 MySQL バージョンが 5.6.4 より前の場合は、この機能を利用するためにアップグレードすることをお勧めします。 MySQL 5.6.4 以降にアップグレードすると、フルテキスト インデックスを使用して InnoDB の LIKE '%string%' クエリを最適化できるようになります。
以上が## InnoDB で MySQL LIKE \'%string%\' クエリを効率的にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。