Heim >Datenbank >MySQL-Tutorial >Inner Join vs. WHERE-Klausel in Oracle: Was ist der tatsächliche Leistungsunterschied?
Inner Joins und WHERE-Klausel in Oracle
In Oracle-Datenbanken ist der Unterschied zwischen der Verwendung von Inner Join (INNER JOIN) und der WHERE-Klausel zum Verbinden zweier Tabellen ein häufiges Problem. Während es in bestimmten Situationen geringfügige Unterschiede zwischen den beiden geben kann, ist der Gesamtleistungsunterschied normalerweise vernachlässigbar.
Beispiel unten:
<code class="language-sql">Select * from Table1 T1 Inner Join Table2 T2 On T1.ID = T2.ID</code>
und
<code class="language-sql">Select * from Table1 T1, Table2 T2 Where T1.ID = T2.ID</code>
Beide Abfragen führen den gleichen Vorgang aus: Verbinden Sie die Zeilen in Tabelle1 mit den Zeilen in Tabelle2 basierend auf der Gleichheit der ID-Spalten. Um dies besser zu verstehen, erstellen wir zwei Beispieltabellen:
<code class="language-sql">CREATE TABLE table1 ( id INT, name VARCHAR(20) ); CREATE TABLE table2 ( id INT, name VARCHAR(20) );</code>
Ausführungsplan für Abfragen mit Inner Joins ausführen:
<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>
...erhält die folgende Ausgabe:
<code>-- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
Ähnlich der Ausführungsplan für eine Abfrage mit der WHERE-Klausel:
<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>
...gibt die folgende Ausgabe zurück:
<code>-- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
Wie Sie sehen können, verwenden beide Abfragen Hash-Joins, um Join-Vorgänge durchzuführen, und es gibt keinen wesentlichen Unterschied in den Ausführungsplänen.
Daher hängt die Wahl zwischen dem Verknüpfen von Tabellen mithilfe von Inner Joins oder WHERE-Klauseln in Oracle hauptsächlich von persönlichen Vorlieben oder den spezifischen Anforderungen des verwendeten Datenbankschemas oder der verwendeten Abfrage ab.
Das obige ist der detaillierte Inhalt vonInner Join vs. WHERE-Klausel in Oracle: Was ist der tatsächliche Leistungsunterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!