ホームページ >データベース >mysql チュートリアル >Oracle の内部結合と WHERE 句: 実際のパフォーマンスの違いは何ですか?
Oracle の内部結合と WHERE 句
Oracle データベースでは、2 つのテーブルを結合するために内部結合 (INNER JOIN) と WHERE 句を使用する場合の違いがよくある問題です。特定の状況では 2 つの間に微妙な違いがある場合がありますが、全体的なパフォーマンスの違いは通常は無視できる程度です。
以下の例:
<code class="language-sql">Select * from Table1 T1 Inner Join Table2 T2 On T1.ID = T2.ID</code>
と
<code class="language-sql">Select * from Table1 T1, Table2 T2 Where T1.ID = T2.ID</code>
両方のクエリは同じ操作を実行します。つまり、ID 列の同一性に基づいて Table1 の行と Table2 の行を結合します。これをよりよく理解するために、2 つのテーブルの例を作成してみましょう:
<code class="language-sql">CREATE TABLE table1 ( id INT, name VARCHAR(20) ); CREATE TABLE table2 ( id INT, name VARCHAR(20) );</code>
内部結合を使用してクエリの実行プランを実行します:
<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>
...次の出力を取得します:
<code>-- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
同様に、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>
...次の出力を返します:
<code>-- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
ご覧のとおり、どちらのクエリもハッシュ結合を使用して結合操作を実行しており、実行計画に大きな違いはありません。
したがって、内部結合を使用してテーブルを結合するか、Oracle の WHERE 句を使用するかの選択は、主に個人の好み、または使用するデータベース スキーマまたはクエリの特定のニーズによって決まります。
以上がOracle の内部結合と WHERE 句: 実際のパフォーマンスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。