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