列顺序在mysql中重要吗?

我在某处读到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   |
-----------------------------------------------

解决方法:

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

例如

按此顺序在列MyIndex(a,b,c)上定义的索引.

查询如

select a from mytable
where c = somevalue

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

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

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

上一篇:奇怪的MySQL表大小


下一篇:如果在ON子句中使用OR,MySQL将不会在JOIN中使用可用索引