0

かなり単純な質問だと思いますが、満足のいく答えが見つかりません。これら2つのクエリに違いはありますか?

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

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

前もって感謝します

4

5 に答える 5

3

括弧の役割は、AND 演算子を使用した条件がもう 1 つある場合に役立ちます。それ以外の場合、構文を除いて実行計画に違いはありません。

于 2012-05-30T12:05:49.683 に答える
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 に答える
2

上記の私のコメントに加えて、マニュアルでは次のように説明されています。

MySQL によって実行される最適化の一部は次のとおりです。

  • 不要な括弧の削除:

       ((a AND b) AND c OR (((a AND b) AND (c AND d))))
    -> (a と b と c) または (a と b と c と d)

いいえ、違いはありません。

于 2012-05-30T12:05:34.440 に答える
1

いいえ、単一の違いはありません。

MySQL 構文の詳細については、こちらを参照してください。

于 2012-05-30T12:03:49.627 に答える
1

いいえ、同じです。条件が 2 つしかない限り、中括弧はあまり意味がありません。

于 2012-05-30T12:05:25.767 に答える