从左到右读取MySQL索引,表格col顺序计数还是只是索引顺序?

时间:2013-11-16 00:43:37

标签: mysql indexing

查询表时,它是指数的顺序,而不是表中实际列的顺序,对吧?

所以,如果你有一个4 col表...

col1   |   col2   |   col3   |   col4

制作一个有序的索引......

col4, col2, col3

然后只要你的查询是在索引的顺序中,就会使用索引,对吧......?

WHERE col4 = "blah" AND col2 = "blah" and col3 = "blah"

干杯

2 个答案:

答案 0 :(得分:2)

一般来说,重要的是索引中列的顺序,而不是表本身。但是,您在where子句中编写条件的顺序也无关紧要。重要的是引擎是否可以使用一个或多个索引来获取与where子句中的条件匹配的行。在您的示例中,可以使用索引,但如果仅从where中删除了col4,则即使其他列位于where和索引中,索引也无济于事。

答案 1 :(得分:1)

没有

WHERE子句的顺序绝对没有区别,只要您没有任何ANDOR逻辑或括号或强制它的任何其他优先约束按特定顺序进行评估。

表中列的顺序也没有任何区别。

重要的是索引只能从左到右使用,直到遇到一个根本不在where子句中的列。发生这种情况时,该索引的该列和后续列不能用于搜索或排序。

在您的示例中,如果col2不在WHERE子句中,则索引将被视为仅包含col4。索引中的col3值将与col2值一起被忽略。