1. ホーム
  2. sql

[解決済み】内部結合とWhereの比較

2022-03-31 17:15:30

質問

との間に(オラクルでの)パフォーマンスの差はありますか?

Select * from Table1 T1 
Inner Join Table2 T2 On T1.ID = T2.ID

そして

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

?

解決方法は?

いいえ!同じ実行計画です、この2つのテーブルを見てください。

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

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

内側joinを使用したクエリの実行計画です。

-- with 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

そして、WHERE句を使ったクエリの実行計画。

-- with where clause

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