我有很多表,其中有外鍵的索引,以及包含這些外鍵的聚集索引。例如,我有類似下面的表格:複合索引的開銷
TABLE: Item
------------------------
id PRIMARY KEY
owner FOREIGN KEY
status
... many more columns
MySQL的生成主鍵和外鍵索引,但有時候,我想提高查詢性能,所以我會創建集羣或覆蓋索引。這導致具有重疊列的索引。
INDEXES ON: Item
------------------------
idx_owner (owner)
idx_owner_status (owner, status)
如果我放棄idx_owner
,通常會使用idx_owner
只想用idx_owner_status
因爲它owner
作爲索引的第一列以後查詢。
是否值得保留idx_owner
?即使MySQL僅使用索引的一部分,是否還有額外的I/O開銷來使用idx_owner_status
?
編輯:我真的只對InnoDB的行爲方式感興趣。