쿼리 속도개선 문의드립니다. 0 2 2,802

by 윤 [SQL Query] 쿼리 Query 힌트 hint 성능개선 속도개선 [2020.09.24 13:39:08]


SELECT
   A.H_CD
   , B.H_NM
   , A.B_CD
   , B.B_NM
   , A.ID
   , A.ID_NM
   , A.L_DT
   , A.L_IP
   , A.L_MTH
FROM
   A_TABLE A
   , B_TABLE B
WHERE
   A.H_CD = B.H_CD
   AND A.B_CD = B.B_CD
   AND '20200101' <= SUBSTR(A.L_DT, 1, 8)
   AND '20200831' >= SUBSTR(A.L_DT, 1, 8)
   AND A.L_MTH <> 'A'
   AND NVL(A.HR, 'S') = 'S'

 

조회기간이 하루인 경우 평균적으로 1만5천 ~ 2만건의 데이터가 있습니다.

위에 SQL문처럼 기간이 긴 경우, 조회 도중 멈추는 경우가 발생하는데요

조회 조건에 쓰이는 컬럼 중, B.H_CD와 B.B_CD는 PK이고 이외에는 PK나 INDEX 설정이 된 컬럼들은 아닙니다

성능개선을 하고 싶은데 도와주세요...

by 마농 [2020.09.24 14:12:15]

1. 조건 주는 방법
 - 컬럼을 가공하여 조건에 맞추어 비교하지 말고
 - 컬럼은 그대로 둔 채 조건을 가공하여 비교하세요.
2. 필요 인덱스
 - a.l_dt

-- 변경전 --
   AND '20200101' <= SUBSTR(A.L_DT, 1, 8)
   AND '20200831' >= SUBSTR(A.L_DT, 1, 8)
-- 변경후 --
   AND A.L_DT >= '20200101' || '000000'
   AND A.L_DT <= '20200831' || '235959'


by 윤 [2020.09.24 15:34:32]

감사합니다:)

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