【发布时间】:2015-12-01 20:05:49
【问题描述】:
我有很多表,其中我有外键索引,以及包含这些外键的聚集索引。例如,我有一个如下表:
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 只使用部分索引,使用 idx_owner_status 是否有额外的 I/O 开销?
编辑:我真的只对 InnoDB 关于索引的行为方式感兴趣。
【问题讨论】:
标签: mysql innodb composite-index