列顺序在mysql中是否重要?

时间:2012-05-27 06:21:09

标签: mysql indexing

我在某处读到了mysql中的列顺序很重要。我相信他们指的是索引列。

问题:如果列顺序很重要,何时以及为何重要?

我问的原因是因为我在mysql中有一个类似于下面的表。 主要索引在左侧,我在最右边有一个索引。这不好吗? 它是一个MyISAM表,主要用于选择(无插入,删除或更新)。

-----------------------------------------------
|  Primary index | data1|  data2  | d3| Index |
-----------------------------------------------
|      1         |   A  |   cat   | 1 |   A   | 
|      2         |   B  |  toads  | 3 |   A   |
|      3         |   A  |  yabby  | 7 |   B   |
|      4         |   B  | rabbits | 1 |   B   |
-----------------------------------------------

1 个答案:

答案 0 :(得分:4)

列顺序仅在定义索引时很重要,因为这会影响索引是否适合用于执行查询。 (所有RBDMS都是如此,而不仅仅是MySQL)

e.g。

按照该顺序在列MyIndex(a, b, c)上定义的索引。

诸如

之类的查询
select a from mytable
where c = somevalue

可能不会使用该索引来执行查询(取决于几个因素,如行数,列选择性等)

然而,它很可能会选择使用定义为MyIndex2(c,a,b)

的索引

更新:请参阅use-the-index-luke.com(感谢格雷格)。