我有一個500萬行的表。我這裏沒加我的指標: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