かなり単純な質問だと思いますが、満足のいく答えが見つかりません。これら2つのクエリに違いはありますか?
SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'
SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')
前もって感謝します
かなり単純な質問だと思いますが、満足のいく答えが見つかりません。これら2つのクエリに違いはありますか?
SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'
SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')
前もって感謝します
括弧の役割は、AND 演算子を使用した条件がもう 1 つある場合に役立ちます。それ以外の場合、構文を除いて実行計画に違いはありません。
現在、クエリに違いはありません。
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'
上記の私のコメントに加えて、マニュアルでは次のように説明されています。
MySQL によって実行される最適化の一部は次のとおりです。
不要な括弧の削除:
((a AND b) AND c OR (((a AND b) AND (c AND d)))) -> (a と b と c) または (a と b と c と d)
いいえ、違いはありません。
いいえ、単一の違いはありません。
MySQL 構文の詳細については、こちらを参照してください。
いいえ、同じです。条件が 2 つしかない限り、中括弧はあまり意味がありません。