複合インデックスは、複数の列を含むデータベース インデックスであり、クエリに複数の列が含まれる場合に効率的な検索パフォーマンスを提供します。これはデータベースのパフォーマンスを大幅に向上できる強力なツールですが、その利点を最大限に活用するには、そのアプリケーションを細心の注意を払って検討する必要があります。
複合インデックスは次の場合に最適です。
複合インデックスはパフォーマンスに大きな利点をもたらします。ただし、次のようなトレードオフもあります:
この例では、 geolat、geolng、sqft、year_built などの列を含む home テーブルがあるため、(geolat, geolng) の複合インデックスは、フィルタリングまたはフィルタリングするクエリを頻繁に実行する場合に有益です。両方の位置座標に基づいて結合します。
複合によるクエリインデックス:
SELECT * FROM homes WHERE geolat BETWEEN ... AND ... AND geolng BETWEEN ... AND ...
このクエリは、複合インデックス (geolat、geolng) を活用して、両方の位置座標に基づいて効率的にフィルター処理を行い、実行が高速化されます。
複合なしのクエリインデックス:
SELECT * FROM homes WHERE geolat = ... AND geolng = ...
複合インデックスがないと、データベースは一致するレコードを取得するためにテーブル全体のスキャンを実行する必要があり、実行が遅くなります。
スキーマとクエリの詳細が追加された更新されたシナリオでは、(geolat、 geolng) を引き続きお勧めします。 EXPLAIN 出力は、クエリが geolat と geolng の既存の単一列インデックスを利用しているが、範囲フィルタリングのためにそれらを組み合わせていないことを示しています。両方の列の複合インデックスによりそれらが結合され、クエリのパフォーマンスがさらに最適化される可能性があります。
以上がデータベースの最適化に複合インデックスを使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。