複合索引是一種包含多個欄位的索引。當查詢經常涉及同一個表中的多個列時,這非常有用。透過利用複合索引,資料庫可以更有效地檢索資料。
利用複合索引通常可以提高查詢效能。但是,由於索引大小和維護開銷增加,使用過多的複合索引會對效能產生負面影響。
考慮建立複合索引來:
在您的範例中,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
正在使用display_status索引,而不是geolat或geolng索引。在這種情況下,geolat 和 geolng 的複合索引可能會提高查詢效能。
以上是何時應該創建複合索引以獲得最佳資料庫效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!