У меня есть таблица с 5 миллионами строк. Я не добавил свои индексы здесь:Индекс MySQL с заказом
CREATE TABLE `my_table` (
`Id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Title` CHAR(200) NULL DEFAULT NULL,
`ProjectId` INT(10) UNSIGNED NOT NULL,
`RoleId` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`Id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
Когда я бегу под SQL, это занимает более 1 минуты.
SELECT *
FROM `my_table` t
WHERE
t.ProjectId IN (123, 456, 789) AND
t.RoleId IN (111, 222, 333)
ORDER BY Title DESC
LIMIT 25
Вопрос в том, как правильно добавить индексы для таблицы. Можете ли вы дать какие-либо решения?
Explain for index "ProjectId" and "RoleId" is:
key = IndxProjectIdRoleId
ref = NULL,
rows: 32,463
Extra: Using where; Using filesort
Спасибо за любое предложение.
Да, я использую составной индекс с именем «IndxProjectIdRoleId» – sanj
, у вас есть нулевое значение в индексированном столбце или всегда настроено на ненулевое значение? – scaisEdge
Я немного обновил ответ. – scaisEdge