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 힌트 조합을 추천합니다.