안녕하세요^^?
제가 기존프로그램 수정하다가 이지아밥책 441p에 있는 인덱스호출과
관련된 아래 빨간색 구문의 의미가 궁금해서요.
%_hints oracle 'ORDERED USE_NL (T_00 T_01)
INDEX (T_00 "ZPP0010T~Z03")'.
이 부분에서 콤마(')와 콤마(')사이의
ORDERED USE_NL (T_00 T_01) 과 INDEX (T_00 "ZPP0010T~Z03")
부분은 어떻게 해석해야 하나요?
select A~GR_RCPT
A~PLANT
A~PROC_TYPE
A~ORDERID
A~PSTNG_DATE
A~MOVE_TYPE
A~ENTRY_QNT
A~ENTRY_UOM
A~STGE_LOC
A~BATCH
A~NO_MORE_GR
A~CREATE_DATE
A~RESULT_TYPE
A~CANCEL_NO
A~TYPE
A~MESSAGE
A~MBLNR
A~MJAHR
B~PLNBEZ as MATNR
A~NO_MORE_GR
A~TYPE_R
A~MESSAGE_R
C~MTART
D~KDAUF
D~KDPOS
into corresponding fields of table G_ZPP0010T_T
from ZPP0010T as A
inner join AFKO as B
on A~ORDERID = B~AUFNR
inner join MARA as C
on B~PLNBEZ = C~MATNR
inner join AFPO as D
on A~ORDERID = D~AUFNR
where A~GR_RCPT in S_GRRCPT "순번(MES)
and A~PLANT in S_WERKS "플랜트
and A~ORDERID in S_AUFNR "오더번호
and A~PROC_TYPE in S_PROCTY "PP 처리유형
and A~PSTNG_DATE in S_BUDAT "전표의 전기일
and A~MOVE_TYPE in S_BWART "이동유형 (재고관리)
and A~RESULT_TYPE in S_RLTTY "실적유형
and A~CANCEL_NO in S_CNCNO "순번(MES)
and A~TYPE in R_TYPE
and B~PLNBEZ in S_MATNR
and A~STGE_LOC in S_LGORT
and A~BATCH in S_BATCH
%_hints oracle 'ORDERED USE_NL (T_00 T_01)
INDEX (T_00 "ZPP0010T~Z03")'.
참고로, ZPP0010T 의 인덱스를 클릭한 캡쳐화면 올립니다.
그럼, 답변 부탁드립니다^^!
댓글 7
-
activeman
2009.02.21 01:41
-
SD_꽃미남
2009.02.21 01:48
그런 뜻이였군요 ..정보 감사합니다 ㅎㅎ
-
하오
2009.02.21 01:54
activeman님, 감사합니다.
그럼, 'ORDERED USE_NL (T_00 T_01) 에서 T_00 T_01 은 무슨 뜻인가요?
그리고, INDEX (T_00 "ZPP0010T~Z03")'. 은 무슨 뜻인가요?
참고로, 제가 ZPP0010T테이블의 인덱스그림을 올렸습니다.
-
onefineday
2009.02.21 02:55
Use_NL는 조인방식을 지정해주는 것으로 nested loop join을 사용하되 T_00은 sql 구문상 첫번째 테이블(여기서는 ZPP0010T
)을 말하는 것이고 T01은 그 다음 테이블(여기서는 AFKO)을 말하는것입니다. 즉 조인시 nested loop join을 사용하되 조인순서(driving 순서)는 zpp0010t를 우선적으로 driving 하라는 애기구요, index 구문은 강제로 인덱스를 지정해줄때 사용하는 구문으로
T_00 즉 ZPP0010T 테이블의 인덱스를 사용할때, 다른 인덱스보다 우선적으로 ZPP0010T의 Z03 인덱스를 사용하라는 뜻입니다.
그런데 그림을 보면 Z03인덱스가 없네요. 아마도 Z03 인덱스를 생성해서 사용하다가 무슨이유에선가 z03인덱스를 삭제한것 같네요.
Z03인덱스가 없다면 오라클옵티마이저가 판단하는 데로 Z01,Z02,ZZ1 셋중의 한개의 인덱스를 사용할거 같네요.
수고하세요.
-
하오
2009.02.21 03:17
onefineday 님, 아~ 그런거군요! 이젠 눈에 들어오네요^^ 정말 감사합니다^^!!!
-
하오
2009.02.21 03:58
왜 종료처리가 안될까요...TT -
테라스
2009.09.29 18:44
알기쉬운 설명 감사드립니다 ^^
오라클의 힌트를 적어 놓은 겁니다.
이 쿼리문을 실행할때는 ZPP0010T 테이블의 "Z03" 인덱스를 실행하라는 뜻입니다.
즐밥하세요.