MySQL多个索引每个包含1个col?还是包含多个cols的1个索引?

时间:2013-04-28 13:39:02

标签: mysql sql innodb

在MySQl InnoDB中,btree索引中有多少列是否重要?

例如:

Key1 contains cols (col1, col2, col3)

或者

Key1 contains col1
Key2 contains col2
Key3 contains col3

这有关系吗?谢谢!

2 个答案:

答案 0 :(得分:0)

是的,这很重要。

更大的指数是......更大。 :-)你知道,更多的磁盘空间,更慢的读取/更新等等。

事实上,当它们太大时,如果一个较小的替代指数可以解决问题,它们偶尔会被计划者忽略。

答案 1 :(得分:0)

(col1, col2, col3)上的索引可用于:

where col1 = 1 and col2 = 2 and col3 = 3
where col1 = 1 and col3 = 3
where col1 = 1

但不是为了:

where col2 = 2 and col3 = 3
where col3 = 3

要快速搜索col2的值,您需要一个以col2.(col2)而非(col2, col3, col1)开头的索引。

因此,如果您想独立于col2搜索col3col1,则三个索引是更优越的选择。