ホームページ  >  記事  >  データベース  >  ## InnoDB で MySQL LIKE \'%string%\' クエリを効率的にするにはどうすればよいですか?

## InnoDB で MySQL LIKE \'%string%\' クエリを効率的にするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 07:23:29721ブラウズ

## How Can I Make MySQL LIKE '%string%' Queries Efficient in InnoDB?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。