Oracle データベースの内部結合と WHERE 句のパフォーマンスの比較
Oracle Database では、内部結合と WHERE 句はパフォーマンスにおいて高度な一貫性を示し、両方によって生成される実行計画はほぼ同一です。
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); -- 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); -- 0 select statement -- 1 hash join (access("T1"."ID"="T2"."ID")) -- 2 table access full table1 -- 3 table access full table2</code>
実行計画からわかるように、両方のメソッドはハッシュ結合を使用し、table1 テーブルと table2 テーブルでフルテーブルスキャンを実行します。したがって、それらの性能特性はほぼ同じです。
以上がOracle の内部結合と WHERE 句: 異なるパフォーマンスが得られますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。