我有一个InnoDB表,大约有20,000,000条记录,我想在其上添加一些索引。由于我在不同列上对此表有很多查询,我知道在这种情况下多列索引将优于单列。所以我按照Fast Index Creation
技术创建了索引,如下所示:
ALTER TABLE mtTBL
ADD INDEX `index1` (`col09`,`col03`,`col02`),
ADD INDEX `index2` (`col09`,`col03`),
ADD INDEX `index3` (`col09`,`col03`,`col07`),
ADD INDEX `index4` (`col09`,`col03`,`col12`),
ADD INDEX `index5` (`col03`),
ADD INDEX `index6` (`col09`),
ADD INDEX `index7` (`col09`,`col07`),
ADD INDEX `index8` (`col09`,`col12`),
ADD INDEX `index9` (`col09`,`col04`),
ADD INDEX `index10` (`col09`,`col13`),
ADD INDEX `index11` (`col09`,`col06`),
ADD INDEX `index12` (`col09`,`col02`),
ADD INDEX `index13` (`col09`,`col06`,`col08`,`col10`);
但是我看到它需要大约8分钟,类似于我逐个添加索引的时候。那么问题是什么?
答案 0 :(得分:0)
col09
作为PRIMARY KEY
中的第一列,则可能会有所帮助。 (现在的PK是什么?)答案 1 :(得分:-1)
我知道这不能解决您的问题,但您的索引是多余的。索引从左侧读取。所以第一个索引涵盖了下一个索引的所有情况。如果使用 col09 进行选择,则使用第一个索引。 col09、col03 等也一样
添加索引 index1
(col09
,col03
,col02
),
添加索引 index2
(col09
,col03
),
添加索引 index5
(col03
),
添加索引 index6
(col09
),