ホームページ >データベース >mysql チュートリアル >MySQL で複数列の LIKE クエリを最適化するにはどうすればよいですか?
SELECT x、y、z FROM table WHERE x のような頻繁なクエリの場合LIKE '%text%' または y LIKE '%text%' またはz '%text%' のように、そのような操作に対して MySQL を最適化することが不可欠になります。通常、インデックスによってインデックス付き列のクエリ効率が向上しますが、問題は LIKE 句でのワイルドカード (%text%) の使用にあります。
テキスト列の場合、インデックスは左から文字のインデックスを作成することによって機能します。ただし、先頭と末尾のワイルドカード (%text% など) を含む LIKE クエリでは、テキストの開始位置が不明であるため、インデックスの使用が妨げられます。
むしろインデックスに依存するのではなく、次の点を考慮してください。アプローチ:
影響を受けるテーブルが MyISAM ストレージ エンジンを使用している場合、MySQL は FTS を提供します。この機能は、固定数の文字ではなく単語全体のインデックスを作成することにより、効率的なテキスト検索を容易にします。
MyISAM 以外のテーブルの場合は、別のテーブルを作成します。単語とそれに対応する ID をメイン テーブルに格納するインデックス テーブル。これは基本的に FTS 機能を模倣し、インデックス付きの用語の高速検索を可能にします。
MySQL バージョン 5.6 以降では、FTS サポートが InnoDB テーブルに拡張され、効率的な検索が可能になります。両方のストレージ エンジンの代替手段。
以上がMySQL で複数列の LIKE クエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。