これが正しいフォーラムかどうかはわかりません。私は、次ていると言うことができます:SQLクエリ:boolean処理
SELECT *
FROM MyTable m
WHERE ((A OR B) AND (C OR D))
をA、B、C、Dはそれぞれ行レベルに基づいて評価する必要がある適切なブール節であると仮定する。また、インデックスがないと仮定します。
これは論理的に等価である:
SELECT *
FROM MyTable m
WHERE (A AND C)
OR (A AND D)
OR (B AND C)
OR (B AND D)
どちらか一方にパフォーマンス上の利点がありますか?私たちはMSSql-2008を利用しています。
奇妙な質問 - +1 – XIVSolutions
クエリオプティマイザは、物事をシャッフルするすべての権利を予約しています。統計とインデックスに基づいて、それはまったく予想外のことをするかもしれません。それは、カジュアルな読者には明らかに見えるように、私はあなたの最初の例を挙げるでしょう。 – HABO
ユースケースは実際に生成されたSQLのためのものです。そのため、ユーザーには比較的まれなデバッグ以外は表示されません。 – Shlomo