힝구힝구
233
2021-01-12 17:28:16
0
299

오라클 날짜 조건 SELECT 시 속도 개선 문제


안녕하세요 초보 오라클 유저입니다.

다름아니라 데이터를 추출하는데 날짜 조건을 걸면 굉장히 오래걸려서.. 쿼리튜닝을 어떻게 해야되나 여쭤봅니다.

문제의 쿼리입니다.


SELECT TS.CUST_NO/*+ INDEX_FFS(TS IDX_TSAVEUSE_02)*/
  FROM TSAVEUSE TS
 INNER JOIN (select cust_no
               from ttvattendcheck
              where attend_date <= trunc(sysdate) - 2
                and attend_code = '202007310001'
              group by cust_no) A
    ON A.CUST_NO = TS.CUST_NO
 WHERE TS.PROC_DATE >= TO_DATE('20201221100000', 'YYYYMMDDHH24MISS')
   AND TS.PROC_DATE <= TRUNC(SYSDATE) - 2
 GROUP BY TS.CUST_NO

여기서 TS.PROC_DATE 절을 지우면 속도가 빨라지는걸 보니 이부분이 문제인건 확실합니다만..

그래서 찾아보니까 뭐 힌트? 라는 기능이 있더라구여.. 그래서 써봤는데 이렇게 쓰는건지잘 모르겠습니다.

실행계획을 보면 IDX_TSAVEUSE02 라는 인덱스를 타는것을 확인해서 쿼리처럼 걸어봤는데, 속도는 여전했습니다.. 18분걸려서 데이터 뽑아냈네요.

데이터 양은 약 3000개의 row라서 그렇게 많지는않은데... 추후에 급하게 데이터 뽑아야될 때 이런일이 발생하면 안될것같아서 미리 알아두려고 합니다.

쿼리를 어떻게 짜야 빠르게 SELECT 할 수 있을까요..?

감사합니다


0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.