例如
SELECT * FROM table WHERE column1 = x AND column2 = y
假设column1和column2都被编入索引,它们在WHERE子句中出现的顺序是否重要?
其中一列可以排除比另一列更多的记录。我应该先放一个,还是排除较少记录的专栏?
答案 0 :(得分:1)
否 - AND
的布尔表达式为commutative。无论您编写表达式的顺序如何,优化器都应该能够确定索引的每个组件使用哪个列。
你的例子非常简单,但是在很多其他情况下这都会改变:
OR
而不是AND
>
或!=
进行范围比较而非等同比较有关详细信息,请参阅我的演示文稿How to Design Indexes, Really。