ホームページ >データベース >mysql チュートリアル >Oracle 結合: 従来の ( ) と ANSI 構文 – どちらを選択する必要がありますか?
Oracle の結合: 従来の構文と ANSI 構文の包括的な比較
はじめに
Oracle は長い- ( ) 演算子を使用する従来の結合構文は、最近、 ANSI 準拠の構文。どちらのアプローチでも同様の結果が得られますが、検討する必要がある微妙な違いがあります。
クエリ パフォーマンス
従来の構文と ANSI 構文はどちらも、ほとんどのシナリオで同等に適切に実行できます。ただし、従来の構文は特定の状況で制限を受ける可能性があります。たとえば、複数列の外部結合では、() の位置が間違っていると、意図した外部結合ではなく、誤って通常の結合が発生する可能性があります。
アプリケーションの互換性
既存のコードベースは従来の構文に大きく依存しているため、問題を発生させずに ANSI 構文に移行するのは現実的ではない可能性があります。相互運用性の問題。コードを現状のままにすることで、継続的な機能が保証されます。
構文の明確さ
ANSI 構文は一般に、よりクリーンでエラーが発生しにくいと考えられています。これにより、外部結合で () 演算子を覚える必要がなくなり、間違ったクエリ構築の可能性が減ります。
標準互換性
ANSI 構文は SQL 標準に準拠しており、さまざまな RDBMS 製品間でのコードの移植が容易になります。将来的に他の RDBMS プラットフォームを使用する予定がある場合は、ANSI 構文を採用することが有益であることが判明する可能性があります。
移行に関する考慮事項
200 個のパッケージとプロシージャを従来の構文から ANSI 構文に移行するには、重要な取り組み。このプロセスを自動化するために利用できるフリーウェア ツールがありますが、アプリケーションの安定性に対する潜在的な影響を慎重に評価する必要があります。
推奨事項
コードが従来の構文で適切に機能している場合の場合は、ANSI に変換する必要がない場合があります。ただし、明確さ、標準準拠、RDBMS プラットフォーム間の相互運用性の容易さを優先する場合は、ANSI 構文を考慮する必要があります。
例
Join Type | Conventional Syntax | ANSI Syntax |
---|---|---|
Inner Join | SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno | SELECT * FROM scott.emp INNER JOIN scott.dept ON emp.deptno = dept.deptno |
Left Outer Join | SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno( ) | SELECT * FROM scott.emp LEFT OUTER JOIN scott.dept ON emp.deptno = dept.deptno |
Right Outer Join | SELECT * FROM emp, dept WHERE emp.deptno( ) = dept.deptno | SELECT * FROM scott.emp RIGHT OUTER JOIN scott.dept ON emp.deptno = dept.deptno |
Full Outer Join | SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.deptno( ) = d.deptno UNION ALL SELECT * FROM emp e RIGHT OUTER JOIN dept d ON e.deptno( ) = d.deptno |
SELECT * FROM scott.emp FULL OUTER JOIN scott.dept ON emp.deptno = dept.deptno |
以上がOracle 結合: 従来の ( ) と ANSI 構文 – どちらを選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。