Oracle rejoint : une comparaison complète de la syntaxe conventionnelle et ANSI
Introduction
Le long d'Oracle La syntaxe de jointure conventionnelle permanente, utilisant l'opérateur ( ), a récemment été confrontée à la concurrence de la syntaxe conforme à l'ANSI. Bien que les deux approches produisent des résultats similaires, il existe des différences subtiles qui méritent un examen.
Performances des requêtes
La syntaxe conventionnelle et la syntaxe ANSI peuvent fonctionner aussi bien dans la plupart des scénarios. Cependant, la syntaxe conventionnelle peut souffrir de limitations dans certaines situations. Par exemple, dans les jointures externes multi-colonnes, un ( ) mal placé peut conduire à une jointure normale accidentelle plutôt qu'à la jointure externe prévue.
Compatibilité des applications
Si votre La base de code existante dépend fortement de la syntaxe conventionnelle, il n'est peut-être pas possible de migrer vers la syntaxe ANSI sans encourir des problèmes d'interopérabilité. Laisser le code tel quel garantit une fonctionnalité continue.
Clarté de la syntaxe
La syntaxe ANSI est généralement considérée comme plus propre et moins sujette aux erreurs. Il élimine le besoin de mémoriser l'opérateur ( ) dans les jointures externes, réduisant ainsi le risque de construction de requêtes incorrectes.
Compatibilité standard
La syntaxe ANSI s'aligne sur la norme SQL, facilitant la portabilité du code entre différents produits SGBDR. Si vous envisagez d'utiliser d'autres plates-formes SGBDR à l'avenir, l'adoption de la syntaxe ANSI peut s'avérer bénéfique.
Considérations relatives à la migration
La migration de 200 packages et procédures de la syntaxe conventionnelle vers la syntaxe ANSI est une entreprise importante. Bien qu'il existe des outils gratuits disponibles pour automatiser ce processus, vous devez évaluer soigneusement l'impact potentiel sur la stabilité de l'application.
Recommandations
Si votre code fonctionne correctement avec une syntaxe conventionnelle , il n'est peut-être pas nécessaire de convertir en ANSI. Cependant, si vous privilégiez la clarté, la conformité aux normes et la facilité d'interopérabilité entre les plates-formes SGBDR, la syntaxe ANSI doit être prise en compte.
Exemple
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 |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!