2017-05-05 4 views
1

は、私は最近、オラクルでは、我々はすべてのパフォーマンスの違いはありOracleでは常にjoin句を使用するのがよいですか?

select t1.a, t2.b 
from table1 t1 
join table2 t2 on (t1.x=t2.x) 

に相当します

select t1.a, t2.b 
from table1 t1, table2 t2 
where t1.x = t2.x 

ような何かを行うことができますか私たちが代わりに一つのスタイルを使用する必要があり、他の引数があることを学びましたもう片方の?

+1

パフォーマンスの違いはありませんが、第2のスタイルは最新の(および推奨されている)読み易いものです。 –

+1

rdbmsは、クエリを2番目のバージョンに最適化するのに適しています。しかし、あなたはそれを自分で行うべきです。 –

+0

@TimSchmelterありがとうございます。RDBMはクエリを第2のタイプに変換すると言っていますか?それは機械可読フォーマットに近いからですか?プロセスの途中で何が起こるのですか? – wh408

答えて

4

一般的には同等ですが、下位のもの(「ANSI結合構文」とも呼ばれます)は、Oracleが推奨するように推奨する必要があります。他の多くの理由により、OUTER JOINドキュメントを参照してください。 をFAST REFRESHで作成する場合は、古いOracle結合構文を使用する必要があります。それ以外の場合は、高速リフレッシュはできません。

長年前、私はOracleでSRを作成しました。 Oracleはこれをバグとはみなさず、むしろ「文書の欠如」とみなしています。私の知識によれば、この制限/バグは解決されていません。

+1

Oracleは、 9iでは、古い構文のために何年ものクエリ最適化ルールがすでに作成されていました。 ANSI 92のSQLは、カバーの下で最適化プログラムを書き直すのではなく、古い構文に変換して最適化します。これは、時折パフォーマンスの異常につながります。特に、外部結合を中心に(驚くことではありません)。長年に渡って、これらの異常はほとんど消えましたが、[周囲はまだまだ慎重である](https://jonathanlewis.wordpress.com/2010/12/03/ansi-argh/) – APC

関連する問題