我在 A、B 和 C 列上有单独的索引。我想在 A+B+C 三列上创建一个复合索引。
我的会有什么影响existing指数对综合指数creation?数据库会利用它们吗?它们是否无关紧要,或者它们会减慢我的新复合索引的创建速度吗?
我正在使用 MySql 5.1。
EDIT:顺便说一句,该表有几百万行。
EDIT 2:感谢 tster 的建议:我在一个小得多的表(诚然只有 20,000 行)上尝试了这一点,但即使如此,当各个索引已经存在时,创建新的复合索引所需的时间明显更长。
当您添加索引时,MySQL 通常会重建整个表,因此所有现有的索引也会重建。这可能会很慢。
唯一的例外是使用 InnoDB 插件添加索引,但它不会。
据我所知,它在构建索引时总是进行全表扫描,但是如果您添加一个与另一个索引具有相同(或子集)列的索引,它可以进行索引扫描。此类索引通常仅在列的顺序不同时才有用。
使用stock mysql,索引越多,创建新索引的速度就越慢,因为它也会重建现有索引。
有了插件,我认为没有什么区别。
无论哪种方式,如果您计划添加多个索引,则应该一次全部完成,而不是一次一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)