ホームページ >データベース >mysql チュートリアル >複合インデックスを使用して LIKE 句で MySQL クエリを最適化する方法

複合インデックスを使用して LIKE 句で MySQL クエリを最適化する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 00:15:16433ブラウズ

How to Optimize MySQL Queries with LIKE Clauses Using Composite Indexes?

LIKE 句を含むクエリの最適なインデックス作成戦略の特定

LIKE 句を含むデータベース クエリを最適化する場合、インデックスの有効性は多少不確実になります。ただし、制限と最適なインデックス作成戦略を理解することで、クエリのパフォーマンスを大幅に向上させることができます。

次のクエリについて考えてみましょう:

SELECT name, usage_guidance, total_used_num
FROM tags
WHERE
 ( name LIKE CONCAT('%', ?, '%') OR
   usage_guidance LIKE CONCAT(?, '%') )
 AND name NOT IN ($in)
ORDER BY name LIKE CONCAT('%', ?, '%') DESC, name ASC
LIMIT 6

このクエリに最適なインデックスを決定するには、LIKE 句の性質を考慮する必要があります。 。 MySQL は、= や > などの演算子を使用した列比較に B ツリー インデックスを利用します。 B ツリー インデックスは、LIKE 引数がワイルドカードのない定数文字列である場合に LIKE 比較を強化できますが、ワイルドカードの存在により有効性が制限されます。

上記のクエリでは、どちらの LIKE 式もワイルドカードで始まっていません。これは、列 use_guidance と name の複合インデックスが最も有益であることを意味します。この方法でインデックスを並べ替えることで、クエリは両方の LIKE 比較でインデックスを利用できます。

複合インデックスを作成する SQL コマンドは次のとおりです。

CREATE INDEX idx_tags ON tags(usage_guidance, name);

次のような場合これは複数の要因がクエリのパフォーマンスに影響するため、テーブル構造、サンプル データ、予想される出力を分析することで、最適化のさらなる機会が明らかになることがよくあります。

以上が複合インデックスを使用して LIKE 句で MySQL クエリを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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