У меня есть много таблиц, где у меня есть индексы на внешних ключах и кластерные индексы, которые включают эти внешние ключи. Например, у меня есть таблица вроде следующего:Накладные расходы композитных индексов
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
вокруг? Есть ли дополнительные служебные данные ввода-вывода для использования idx_owner_status
, хотя MySQL использует только часть индекса?
Редактировать: Меня действительно интересует только InnoDB ведет себя относительно индексов.