查询中WHERE约束的顺序

时间:2012-10-31 13:32:55

标签: php mysql

  

可能重复:
  Does the order of fields in a WHERE clause affect performance in MySQL?

WHERE子句中元素的顺序是否会改变查询的速度?

我有以下内容:

SELECT * FROM table1 WHERE a<b

。这将返回500条记录。

SELECT * FROM table1 WHERE c<d

。这将返回130000000条记录。

现在,如果您可以选择:

SELECT * FROM table1 WHERE a<b AND c<d

SELECT * FROM table1 WHERE c<d AND a<b

这两个查询中的哪一个会更快?订单是否重要?

3 个答案:

答案 0 :(得分:3)

唯一影响性能的时间是索引。

如果您的索引位于(a, c),则索引从左到右会导致WHERE c < d AND a < b的谓词运行速度变慢。

如果您没有索引,则订单无关紧要。

答案 1 :(得分:0)

不,没有区别。就像在MATH中一样,A + B = B + C。这只意味着互换两者并没有任何区别。

答案 2 :(得分:0)

我不这么认为会有任何区别,无论如何它都会被sql优化。 有关此问题的更多信息:Does the order of fields in a WHERE clause affect performance in MySQL?