2012-05-27 53 views
2

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

我无法想象订单的重要性。它可能在低层次上很重要,但是DBMS可以优化它,所以你永远不必担心这样的事情。我想看到一个权威的答案,虽然 – Oleksi

回答

3

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

例如

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

的查询,如

select a from mytable 
where c = somevalue 

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

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

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

+0

这是正确的,阅读http://use-the-index-luke.com/有关它的一些相关信息。 – gcochard

+0

所以,如果我正确地理解这一点,当索引应用于多列(组合索引)时,列的顺序很重要。在我上面的索引只在一列上的示例中,它不应该是一个问题。这听起来正确吗? – TryHarder

+0

是......................... –

相关问题