Должен ли я добавить несколько индексов?
Если у меня есть уникальный индекс в таблице, которая охватывает 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 ответа:
В теории индекс на
(usersID, userTypesID)
также будет действовать как индекс наusersID
сам по себе, потому что это самый левый столбец.Вы также выиграете от индекса на
userTypesID
.
Вам не нужны дополнительные индексы, смотрите здесь. Также попробуйте показать индексы из my_table