Standart Table MKPF란 테이블을 사용하는데요
고유인덱스 MKPF~0 : mandt + mblnr + mjahr 이 있고
유저인덱스 MKPF~Z01 : mandt + budat + mblnr 이 있습니다.
인덱스 MKPF~Z01을 타게 하려고
SELECT I~MATNR
FROM MKPF AS H INNER JOIN MSEG AS I ON H~MBLNR = I~MBLNR AND H~MJAHR = I~MJAHR
WHERE I~WERKS EQ '1000'
AND I~BWART EQ '101'
AND H~BUDAT IN LT_DATE.
위과 같이 SQL를 만들었는데
MKPF~Z01 인덱스를 안타고 무조건 MKPF~0을 타서 인덱스 풀스캔을 하네요.;..ㅡ.,ㅡ
왜그런거죠??
도져히 이해가 안되요....ㅜㅜ
고수님들 도와주세요~~
댓글 4
-
activeman
2010.03.27 01:22
-
이카루스
2010.03.27 01:26
오라클이 아니고 DB2 이거든요...^^;;
다른 방법을 알려주세요~~^^;;
-
Risky
2010.03.27 01:31
-
無念군
2010.03.27 02:24
이론 activeman 님 하고 동일한 답 적다가 새션 끈어졌는데 ..
DB2 ㅡ_ㅡ;;;
HINT를 사용하십시요(오라클 db를 사용하고 계시죠?)..
SELECT I~MATNR
FROM MKPF AS H INNER JOIN MSEG AS I ON H~MBLNR = I~MBLNR AND H~MJAHR = I~MJAHR
WHERE I~WERKS EQ '1000'
AND I~BWART EQ '101'
AND H~BUDAT IN LT_DATE
%_HINTS ORACLE 'INDEX(MKPF, "MKPF~Z01")'.
즐밥하세요.