ホームページ >データベース >mysql チュートリアル >複合インデックスを使用して LIKE 句で MySQL クエリを最適化する方法
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 サイトの他の関連記事を参照してください。