Должен ли я добавить несколько индексов?


Если у меня есть уникальный индекс в таблице, которая охватывает 2 поля, должен ли я добавить еще один индекс в каждое поле?

Пример:

Моя таблица выглядит так:

CREATE TABLE IF NOT EXISTS `my_table` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `usersID` int(11) NOT NULL,
  `userTypesID` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Затем я добавляю уникальный индекс, который охватывает как usersID, так и userTypesID:

ALTER TABLE  `my_table` ADD UNIQUE  `usersID_userTypesID` (  `usersID` ,  `userTypesID` )

стоит ли добавлять еще 2 индекса, один на usersID, а другой на userTypesID? например:

ALTER TABLE  `my_table` ADD INDEX (  `usersID` )
ALTER TABLE  `my_table` ADD INDEX (  `userTypesID` )

может ли добавление этих дополнительных индексов ускорить некоторые запросы? такие как:

SELECT      `usersID`
FROM        `my_table`
WHERE       `userTypesID` = 101

Или

SELECT      `usersTypesID`
FROM        `my_table`
WHERE       `usersID` = 29
2 2

2 ответа:

В теории индекс на (usersID, userTypesID) также будет действовать как индекс на usersID сам по себе, потому что это самый левый столбец.

Вы также выиграете от индекса на userTypesID.

Вам не нужны дополнительные индексы, смотрите здесь. Также попробуйте показать индексы из my_table