본문 바로가기

DataBase

조인 순서 조정을 위한 힌트(ordered, leading)

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

힌트는 다수의 테이블을 조인하는 경우에 조인 순서에 혼선이 있을 때 적용하는 것이 가장 일반적이다.
Sort Merge 조인 이나 해쉬조인에서는 적은 테이블을 먼저 처리하도록 유도할 때 사용하는 것이 좋다.

 

ORDERED


FROM절에 기술된 테이블 순서대로 조인을 수행하도록 유도한다.
만약 LEADING 힌트와 함께 사용하면 LEADING 힌트는 무시된다.

예) SELECT /*+ ORDERED */ ...
FROM TAB1, TAB2, TAB3
WHERE ....

ORDERED 힌트는 액세스 순서만 제시할 뿐이고, 조인 방법 과는 무관하기 때문에 조인방법을 유도하기 위한 USE_NL, USE_MERGE등의 힌트와 함께 사용하는 것이 일반적이다

예) SELECT /*+ ORDERED USE_NL(A B C) */.........
FROM TAB1 a, TAB2 b, TAB3 c
WHERE ........

LEADING


FROM절에 기술한 테이블의 순서와 상관없이 조인 순서를 제어하는 힌트로서 ORDERED 힌트와는 달리 FROM절을 변경 필요 없이 사용할 수 있다.
ORDERED 힌트와 함께 사용되면 무시된다.

예) SELECT /*+ LEADING(b c) */......
FROM CUST a, ORDER_DETAIL b, ITEM c
WHERE a.cust_no = b.cust_no
AND b.item_no = c.item_no
AND ....

다른 예

SELECT /*+ ORDERED USE_NL(a b u d) */
B .TASKID,
B.ROOTINSTID,
B.ROLENAME,
B.TITLE,
B.ENDPOINT,
B.RESNAME,
get_dept_fld ('ALL', U.DEPT_CD, 1) AS CUSCOM_NM,
get_dept_fld ('ALL', U.DEPT_CD, 2) AS HQ_NM,
D.DEPT_NM,
U.POSI_NM,
U.TEL_NO
FROM SR_WORKLIST01 A,
BPM_WORKLIST B,
SA_USER01 U,
SA_DEPT01 D
WHERE A.INSTID = B.ROOTINSTID
AND B.ENDPOINT = U.USER_ID
AND U.DEPT_CD = D.DEPT_CD
AND B.STATUS IN ('NEW', 'CONFIRMED')
AND A.SR_CODE = #reqcd#

AND b.isdeleted IS NULL

/*+ ordered */를 사용하게 되면 from절에 정의된 테이블 순서에 의해 드라이빙이 시작되며 조건절의 경우 드라이빙 된 테이블의 조건을 추출하여야 한다.(강제적으로 해당 테이블의 드라이빙 및 데이터 추출 순서 조절 가능)

'DataBase' 카테고리의 다른 글

[Oracle] 데이터 모델링  (0) 2012.11.06
TRUNCATE TABLE  (0) 2012.11.06
정렬과 머지조인  (0) 2012.05.08
[ERWin] ERWin 7.3 Ver. Comment 로 Logical 만들기  (0) 2012.02.09
오라클 튜닝 관련 내용 정리  (0) 2012.02.09