私は常に JOINS を使用してきましたが、今日は次のような単純なコードを見ました。
SELECT Name FROM customers c, orders d WHERE c.ID=d.ID
単に古い方法ですか?
違いはありません。実行計画はその方法を使用しても同じです。JOIN
これら 2 つのクエリは意味的に同一です。結合では、JOIN 句または WHERE 句のいずれかで述語を指定できます。
内部結合のみを行う場合、暗黙的なスタイルと ANSI 結合の間に大きな違いはありません。おそらく、データベースはそれらを同じように実行するため、違いはありません。
ただし、少なくとも暗黙的な外部結合を許可されている場合は、すぐに複雑になる可能性があります。Join では実行できて、古い方法では実行できないことがいくつかあります。次のステートメントは、暗黙の結合では表現できないと思います(以下のリンクから取得)。
SELECT *
FROM T1 LEFT OUTER JOIN T2
ON (T1.SOME_VALUE = 11 and T1.ID = T2.ID)
WHERE T1.OTEHR_VALUE > 3;
詳細については、これをお読みください。
ANSI の外部結合と Oracle の外部結合構文の同等性について、混乱があるようです。次の例では、これら 2 つの構文の等価性と非等価性について説明します。