「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 内側の結合対オラクルの句:本当のパフォーマンスの違いは何ですか?

内側の結合対オラクルの句:本当のパフォーマンスの違いは何ですか?

2025-02-11に投稿されました
ブラウズ:687

Inner Join vs. WHERE Clause in Oracle: What's the Real Performance Difference?

内側のOracleに参加する句

]

Oracleデータベースでは、ネットワーク内(内側の結合)を使用して2つのテーブルを結合することとWhere句は一般的な問題です。特定の状況では2つの間にわずかな違いがあるかもしれませんが、全体的なパフォーマンスの違いは無視できることがよくあります。

次の例:

Select * from Table1 T1 
Inner Join Table2 T2 On T1.ID = T2.ID
の内側結合Table2 T2

同様に

Select * from Table1 T1, Table2 T2 
Where T1.ID = T2.ID

両方のクエリが同じ操作を実行します。ID列の等価に基づいて、表1の行で行を表1に連結します。これをよりよく理解するには、2つのサンプルテーブルを作成しましょう。

CREATE TABLE table1 (
  id INT,
  name VARCHAR(20)
);

CREATE TABLE table2 (
  id INT,
  name VARCHAR(20)
);
接続を使用したクエリの実行計画を実行する:

-- 使用内连接
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
同様に、where句を使用したクエリの実行計画:

-- 使用 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
両方のクエリがハッシュ接続を使用して接続操作を実行することがわかり、実行計画に大きな違いはありません。

したがって、OracleのIntho-foreまたはWhere句を使用することを選択することは、主に個人的な好みまたはデータベーススキーマの特定のニーズまたは使用されるクエリに依存します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3