3

次のクエリ(2つの異なる結合構文を使用)の違いは何でしょうか。私はこれを継承されたコードで見ましたが、結果が常に同じであるかどうかに興味がありました。そうでない場合は、なぜ一方を他方の上に使用するのでしょうか。

クエリ#1の例:

SELECT * FROM TableA a
  INNER JOIN TableB b
    INNER JOIN TableC c
      ON b.TableBId = c.TableCId
     ON b.TableBId = a.TableAId

クエリ#2の例:

SELECT * FROM TableA a
  INNER JOIN TableB b
     ON b.TableBId = a.TableAId
  INNER JOIN TableC c
     ON b.TableBId = c.TableCId
4

3 に答える 3

2

すでに述べたように、実行プランを確認して、これらが実際に同じクエリであることを確認できます。私は彼らがそうだとほぼ確信していますが

なぜあなたがどちらか一方を選ぶのかというあなたの質問にもっと。これはスタイルの好みに帰着すると思います。将来の読者のために明確な定義があるため、ほとんどの場合、クエリ#2が表示されます。本当に複雑なクエリを作成すると、得られるメリットは大幅に増大します。

他のアプローチは読みにくくなり、決して使用すべきではないと本当に信じているので、私は他のアプローチを本当に保証することはできません。繰り返しますが、それは私の意見であり、その理由は意見/スタイルに帰着します。

ただし、標準的な方法はquery2なので、私はそれに固執します:)...しかし、繰り返しますが、私だけです

于 2012-04-13T20:11:46.083 に答える
0

実行プランをプレビューしてみてください。まったく同じになる可能性が非常に高いです。

于 2012-04-13T20:09:13.487 に答える
0

クエリの実行プランはまったく同じです。

于 2012-04-13T20:19:10.470 に答える