我有很多表,其中有外键的索引,以及包含这些外键的聚集索引。例如,我有类似下面的表格:复合索引的开销
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的行为方式感兴趣。