3

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

1 回答 1

4

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

例如

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

查询如

select a from mytable
where c = somevalue

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

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

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

于 2012-05-27T06:32:47.280 回答