这两个查询之间有区别吗?

时间:2012-05-30 12:02:03

标签: mysql

嗯,我认为很简单的问题,但我找不到令人满意的答案。 这两个查询之间有区别吗?

SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'

SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')

提前致谢

5 个答案:

答案 0 :(得分:3)

当有一个带AND运算符的条件时,括号的作用将很有用。 除了语法之外,执行计划没有区别。

答案 1 :(得分:2)

继上述评论之后,the manual解释说:

  

MySQL执行的一些优化如下:

     
      
  • 删除不必要的括号:

       ((a AND b) AND c OR (((a AND b) AND (c AND d))))
    -> (a AND b AND c) OR (a AND b AND c AND d)
  •   

所以不,没有任何区别。

答案 2 :(得分:2)

目前您的查询存在 NO 差异。

如果在您的查询中添加AND条件,则会有所不同。

例如

SELECT * FROM table WHERE id=1 AND column1 = 'x' OR column2 = 'x'

SELECT * FROM table WHERE id=1 AND (column1 = 'x' OR column2 = 'x')

注意

SELECT * FROM table WHERE id=1 AND column1 = 'x' OR column2 = 'x'

等同于

SELECT * FROM table WHERE (id=1 AND column1 = 'x') OR column2 = 'x'

希望你能有所作为。

答案 3 :(得分:1)

不,没有一个区别。

查看更多MySQL语法here

答案 4 :(得分:1)

没有。一样的。只要只有两个条件,括号没有多大意义。