Oracle
 sql >> база данни >  >> RDS >> Oracle

Вътрешно присъединяване срещу Къде

Не! Същият план за изпълнение, вижте тези две таблици:

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

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

Планът за изпълнение на заявката с помощта на вътрешното присъединяване:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да опиша проблема с производителността в релационна база данни?

  2. ORA-30926:не може да се получи стабилен набор от редове в изходните таблици при обединяване на таблици

  3. Пример за Oracle WHILE LOOP

  4. Oracle Connection Pool Class

  5. Преобразуване на цифри/числа в думи за валута INR (индийски рупии) в Oracle PL/SQL