我有一个innodb表,有大约20000000条记录,我想在上面添加一些索引。因为我在这个表的不同列上有很多查询,所以我知道在这种情况下,多列索引比单列索引更好。所以我创建了索引 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分钟,与逐个添加索引时的情况类似。那么问题是什么呢?
1条答案
按热度按时间exdqitrt1#
它似乎是在等待一个索引在下一个索引之前完成吗(这可能表明快速索引创建只对一个用户很快。)
您使用的是什么版本的mysql(更新的版本可能会有进一步的改进。)
这是一个“太多”的索引。请讨论一下表中有什么,以及为什么需要这么多索引(可能有解决办法。)
如果你有
col09
作为PRIMARY KEY
. (现在的pk是什么?)为什么8分钟很重要?你不会每天都添加索引。
浏览stackoverflow教程,这样你就可以获得足够的“声誉”来回答我的问题。