Oracle データベースの INNER JOIN 句と WHERE 句のパフォーマンスの違い
多くの人が疑問に思っています: Oracle データベースでは、INNER JOIN 句と WHERE 句を使用して 2 つのテーブルの共通列に基づいてデータをクエリすると、パフォーマンスに違いはありますか?
答えは、パフォーマンスに違いはありません。これを証明するために、2 つのクエリ メソッドの実行プランを提供します:
<code class="language-sql">-- INNER JOIN执行计划 EXPLAIN PLAN FOR SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id; SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY); -- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
<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); -- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
実行計画からわかるように、どちらのクエリもパフォーマンスの最適化のためにハッシュ結合を使用し、同じ結果が得られました。したがって、Oracle では、共通の列に基づいてテーブルを結合することが目的の場合、WHERE 句よりも INNER JOIN を選択してもパフォーマンスに大きな利点はありません。
以上がOracle の内部結合と WHERE 句: パフォーマンスに違いはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。