我有个别索引,比如A,B和C列.我想在三列A + B + C上创建一个复合索引.
我的现有索引对复合索引创建有什么影响?数据库是否会利用它们,它们是不相关的,还是会减慢我的新复合索引的创建速度?
我正在使用MySql 5.1.
编辑:BTW表有几百万行.
编辑2:感谢tster的建议:我在一个小得多的表上尝试了这一点(诚然只有20,000行),但即使如此,当单个索引已经存在时,新复合索引的创建明显更长.
MySQL通常会在您添加索引时重建整个表,因此所有现有的表都会重建.这可能很慢.
唯一的例外是使用InnoDB插件添加索引,但没有.
据我所知,它在构建索引时总是进行全表扫描,但是如果你要添加一个与另一个索引具有相同(或子集)列的索引,它可以进行索引扫描.这些索引通常仅在列的顺序不同时才有用.
使用stock mysql,你拥有的索引越多,创建新索引的速度就越慢,因为它也会重建现有的索引.
有了这个插件,我觉得没什么区别.
无论哪种方式,如果您计划添加多个索引,您应该一次一个,而不是一次一个.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |