sql >> Databasteknik >  >> RDS >> Oracle

Inner join vs Where

Nej! Samma utförandeplan, titta på dessa två tabeller:

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

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

Utförandeplanen för frågan med den inre kopplingen:

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

Och exekveringsplanen för frågan med hjälp av en WHERE-klausul.

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


  1. Lagra och analysera dokument på Windows filsystem med SQL Server Semantic Search – Del 2

  2. FEL:kunde inte ladda biblioteket "/opt/PostgreSQL/9.0/lib/postgresql/plperl.so":libperl.so:

  3. Stoppa (lång) körning av SQL-fråga i PostgreSQL när session eller begäranden inte längre existerar?

  4. INSERT med dynamiskt tabellnamn i triggerfunktion