오라클 옵티마이저 힌트 – ORDERED

ORDERED는 조인 순서를 지정하는 힌트입니다. 이 힌트를 사용하면 FROM절에 나열된 순서대로 조인합니다.

기본 사용법

아래 1번 쿼리는 FROM 절에 나열된 EMP, DEPT 순서로 조인하는 실행 계획을 생성합니다.

-- [1]
SELECT /*+ ORDERED */ 
       *
FROM   EMP A, DEPT B
WHERE  A.DEPTNO = B.DEPTNO;

쿼리 변환과 조인 순서 힌트

옵티마이저는 최적화를 하기 위해 서브 쿼리를 조인으로 변환하는 쿼리 변환(Subquery Unnesting)을 할 수 있습니다. 일반적으로 변환된 쿼리는 서브 쿼리안의 테이블이 FROM절 순서 앞에 위치한다고 알려져 있습니다.

이 점을 이용해 ORDERED 힌트로 조인 순서를 조정하기도 합니다. 아래 쿼리가 쿼리 변환이 되면 DEPT, EMP 순서로 조인합니다.

-- [2]
SELECT /*+ ORDERED */ *
FROM   EMP A
WHERE  A.DEPTNO IN ( SELECT B.DEPTNO
                     FROM   DEPT B )

그러나, 이 방법은 서브 쿼리가 2개 이상인 경우에는 적용하기 어렵고, 옵티마이저 버전에 따라 다를 수 있으므로 권장하지 않습니다.

조인으로 변환된 서브 쿼리의 조인 순서를 지정하는 것은 뒤에 설명할 QB_NAME, LEADING 힌트 조합을 추천합니다.

Scroll to Top