複合インデックスは、複数の列を含むインデックスの一種です。これは、クエリに同じテーブルの複数の列が頻繁に含まれる場合に便利です。複合インデックスを利用することで、データベースはより効率的にデータを取得できます。
複合インデックスを使用すると、通常、クエリのパフォーマンスが向上します。ただし、過剰な数の複合インデックスを使用すると、インデックス サイズとメンテナンスのオーバーヘッドが増加するため、パフォーマンスに悪影響を及ぼす可能性があります。
次の目的で複合インデックスの作成を検討してください。
この例では、 geolat と geolng の複合インデックスは、これらの座標に基づいてクエリをフィルタリングするのに役立ちます。例:
SELECT * FROM homes WHERE geolat BETWEEN ??? AND ??? AND geolng BETWEEN ??? AND ???
提供されたものに基づくスキーマでは、次のクエリ:
EXPLAIN SELECT homes.home_id, address, city, state, zip, price, sqft, year_built, account_type_id, num_of_beds, num_of_baths, geolat, geolng, photo_id, photo_url_dir FROM homes LEFT OUTER JOIN home_photos ON homes.home_id = home_photos.home_id AND homes.primary_photo_group_id = home_photos.home_photo_group_id AND home_photos.home_photo_type_id = 2 WHERE homes.display_status = true AND homes.geolat BETWEEN -100 AND 100 AND homes.geolng BETWEEN -100 AND 100
は geolat インデックスや geolng インデックスではなく、display_status インデックスを使用しています。 geolat と geolng の複合インデックスにより、このシナリオでクエリのパフォーマンスが向上する可能性があります。
以上がデータベースのパフォーマンスを最適化するには、いつ複合インデックスを作成する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。