안녕하세요 오라클 select 쿼리에 조건 추가 시 런타임 관련 질문입니다. 1

by bean [Oracle Tuning] [2022.06.08 09:00:17]


SELECT --+ INDEX ( A TEMP_A_PK )
       *
  FROM TEMP_A A
 WHERE A.DATE = TO_DATE('2022-01-01','YYYY-MM-DD')
   AND EXISTS ( SELECT --+ INDEX ( B TEMP_B_PK ) INDEX ( C TEMP_C_PK )
                       1
                  FROM TEMP_B B
                      ,TEMP_C C
                 WHERE B.PK = A.PK 
                   AND C.CODE = B.CODE 
                   AND B.DATE BETWEEN C.FROMDATE AND C.TODATE
               --  AND C.GROUP = 'AAA' 
                   )

안녕하세요.

오라클에서 위 예시쿼리의 C.GROUP 조건 주석을 풀고 조회 시 런타임만 돌아가고 데이터가 조회되지않습니다.

인덱스 힌트도줬고..

차라리 C.GROUP 조건을 주석처리하면 데이터가 빠르게 잘 나오는데 AND조건 하나 추가했다고 조회가 안되는게.. 이유를 찾아봐도 잘 해결되지가않습니다.

혹시 원인에대해 아시는부분 있으시면 알려주시면 정말 감사하겠습니다 !

by 마농 [2022.06.08 13:13:06]

1. 각 테이블의 정보를 주세요.
- 전체 건수 및 조건을 만족하는 건수
- 인덱스 정보
2. 원인은
- Exists 는 조건을 만족하는 자료 하나만 발견되면 바로 멈추게 되는데.
- 해당 조건을 만족하는 자료가 너무 없어서 찾을때까지 멈추지 못하는 듯 하네요.
- 적절한 인덱스가 필요해 보입니다. temp_c(group, code, fromdate, todate)
3. 질문시 유의사항
- DATE , GROUP 등의 예약어를 명칭으로 사용하지 말아 주세요.
- dt, grp 등으로 변경하여 질문해 주세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입