0

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

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

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

提前致谢

4

5 回答 5

3

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

于 2012-05-30T12:05:49.683 回答
2

除了我上面的评论之外,手册还解释了:

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)

所以不,没有任何区别。

于 2012-05-30T12:05:34.440 回答
2

现在您的查询没有区别。

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'

希望你能有所作为。

于 2012-05-30T12:09:27.623 回答
1

不,没有任何区别。

在此处查看更多 MySQL 语法。

于 2012-05-30T12:03:49.627 回答
1

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

于 2012-05-30T12:05:25.767 回答