안녕하세요
abap에서의 힌트 적용과 오라클에서의 힌트 적용 문의합니다.
s_matnr에 자재코드 범위 검색조건이 입력되지 않는다고 했을 때
인덱스가 먹히지 않는것이 맞겠지요?
SELECT
rsnum
rspos
matnr
charg
bdmng
enmng
INTO CORRESPONDING FIELDS OF TABLE gt_resb FROM resb
WHERE matnr IN s_matnr
AND xloek <> 'X' " Item is Deleted
AND kzear <> 'X'
%_HINTS ORACLE 'INDEX("RESB" "RESB~M")'.
위와 같이 힌트를 줬는데 데이터가 적은 환경에서 돌려서 그런지 빠른지 느린지 확인이 안되어서
ST04에서 오라클 SQL로 바꿔봤는데 잘 안먹히는 것 같습니다. 운영환경에서는 속도가 여전히 40초 이상 나오네요
아래 HINT 적용이 잘못된 걸까요?
SELECT
/*+
INDEX(RESB RESB~M)
*/
RSNUM,RSPOS,MATNR,CHARG,BDMNG,ENMNG
FROM RESB
WHERE
MANDT='100' AND XLOEK <> 'X' AND KZEAR <> 'X'
1. S_MATNR이 공란이면 matnr에 아무 조건이 없는 것으로 취급될 수 있습니다. => 제외
2. RESB~M 인덱스면 MATNR,WERKS,XLOEK,KZEAR,BDTER가 들어갈텐데요
상기 조건이면 안타는 게 맞을 듯 합니다.
3. <> 부정조건은 인덱스 선정에서 제외됩니다 <> 'X' 보다 = ' '을 사용하시는 편을 추천드립니다.
4. 플랜트가 하나라고 할지라도 MATNR, WERKS, XLOEK, KZEAR 조건을 EQ기준으로 주시면
정상적으로 인덱스 스캔을 할 겁니다.
참고되시길요.