Maison >base de données >tutoriel mysql >Jointure interne et clause WHERE dans Oracle : quelle est la véritable différence de performances ?
Jointures internes et clause WHERE dans Oracle
Dans la base de données Oracle, la différence entre l'utilisation de la jointure interne (INNER JOIN) et de la clause WHERE pour joindre deux tables est un problème courant. Bien qu’il puisse exister des différences subtiles entre les deux dans des situations spécifiques, la différence de performances globale est généralement négligeable.
Exemple ci-dessous :
<code class="language-sql">Select * from Table1 T1 Inner Join Table2 T2 On T1.ID = T2.ID</code>
et
<code class="language-sql">Select * from Table1 T1, Table2 T2 Where T1.ID = T2.ID</code>
Les deux requêtes effectuent la même opération : joignez les lignes du tableau 1 avec les lignes du tableau 2 en fonction de l'égalité des colonnes d'ID. Pour mieux comprendre cela, créons deux exemples de tableaux :
<code class="language-sql">CREATE TABLE table1 ( id INT, name VARCHAR(20) ); CREATE TABLE table2 ( id INT, name VARCHAR(20) );</code>
Exécuter le plan d'exécution pour les requêtes utilisant des jointures internes :
<code class="language-sql">-- 使用内连接 EXPLAIN PLAN FOR SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id; SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY);</code>
...obtient le résultat suivant :
<code>-- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
De même, le plan d'exécution d'une requête utilisant la clause WHERE :
<code class="language-sql">-- 使用 WHERE 子句 EXPLAIN PLAN FOR SELECT * FROM table1 t1, table2 t2 WHERE t1.id = t2.id; SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY);</code>
...renvoie le résultat suivant :
<code>-- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
Comme vous pouvez le voir, les deux requêtes utilisent des jointures par hachage pour effectuer des opérations de jointure, et il n'y a pas de différence significative dans les plans d'exécution.
Ainsi, le choix entre joindre des tables à l'aide de jointures internes ou de clauses WHERE dans Oracle dépend principalement des préférences personnelles ou des besoins spécifiques du schéma de base de données ou de la requête utilisée.
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!