嗯,我认为很简单的问题,但我找不到令人满意的答案。 这两个查询之间有区别吗?
SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'
SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')
提前致谢
答案 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)
没有。一样的。只要只有两个条件,括号没有多大意义。