DB프로그래밍

[오라클 힌트] ORDERED USE_NL , LEADING Hint절 사용방법 의미!

오라클 힌트(HINT)는 옵티마이저의 실행계획을 개발자 혹은 DBA가 원하는 방향으로 유도하기 위해 사용된다. 튜닝의 목표는 디스크 I/O를 최소화하고 버퍼 캐시 효율을 최대화하는 것이다.

SQL 실행계획을 보았을때 COST는  디스크 I/O횟수를 의미하는데 낮을수록 효율이 좋다.

조인 방식의 HINT

USE_NL : NL(중첩루프)조인으로 유도

USE_MERGE : 소트 머지 조인으로 유도

USE_HASH : 해시 조인으로 유도

NL_SJ : NL 세미 조인으로 유도

MERGE_SJ : 소트 머지 세미조인으로 유도

MASH_SJ : 해시 세미조인으로 유도

ORDERED와 LEADING의 의미

1. ORDERED : from절에 나열된 순서대로 조인을 유도

2. LEADING : leading 힌트 괄호에 기술한 순서대로 조인을 유도

다음 예제 쿼리는 A테이블이 드라이빙테이블이되고 B테이블이 이너테이블이 된다. DRIVING테이블은 먼저 엑세스 되는 테이블을 의미한다. INNER테이블은 뒤에 엑세스하는 테이블을 의미한다.


SELECT   /*+ ORDERED USE_NL(A B)*/         

A.*

FROM tb1 A, tb2 B, tb3 C

WHERE  A.ID = B.ID

AND B.ID = C.ID

LEADING은 위 예제에서 ORDERED를 지우고 LEADING (B A)을 넣어주면되는데 From절에 기술한 순서대로 액세스를 유도하는게 아닌 괄호안에 작성한 순서대로 엑세스 하게 된다.

SELECT   /*+ LEADING( B A)  USE_NL(A E)*/         

A.*

FROM tb1 A, tb2 B, tb3 C, tb4 D, tb5 E

WHERE ….. 생략

error: Content is protected !!