하.. 수업을 듣고 문제를 봤는데 항상 모르겠다..
그냥 봐서는.. COURSE_CODE < 1000 이게 EQUAL 비교가 아니라서 인덱스매칭률이 떨어져서 그런거 아닌가 싶은데.. 어떻게 해결해야 하는지 잘 모르겠네..
정답은.. 인덱스의 첫 번째 칼럼이 COURSE_CODE에 대한 조건때문에 두 번째 칼럼인 YEAR에 대한 = 조건이 체크 조건으로 사용된다는 거였다.. 흠... 그럼 어떻게 해결하지?
문제다..
뭔가 조인이 하나 더 생겼다..
EC_COURSE 테이블로 조인을 진행한 것 같은데..
흠.. 이건 EC_COURSE가 어떻게 생겨먹은지 알아야 푸는 것 아닌가..
Execution Plan만 봐서는 pk가 UNIQUE 이니.. 뭔가 조인이 되는 것 같은데.. 맥락상 COURSE_CODE로 조인하는듯 하다.. 그럼 EC_COURSE의 B.COURSE_CODE에 < 조건을 주고 A.YEAR에 = 연산을 주면 인덱스가 먹는다는 걸까..? 정답을 봐야겠다.
정답이 맞는 듯 하다.
답안은 이거였다.
WHERE A.COURSE_CODE = B.COURSE_CODE
AND B.COURSE_CODE < 1000
AND A.YEAR = '2000'
풀이
어떻게든 인덱스에 사용된 컬럼을 =로 매칭해서 인덱스매칭률을 높이는 게 정답이었다.
그래서 테이블 조인을 시도한 것이었다.
이렇게 해서도 성능이 향상되는게 신기하다..
'DB > SQL튜닝' 카테고리의 다른 글
업무에 바로 쓰는 SQL튜닝 입문 - 5교시(인덱스활용불가) - 문제 (0) | 2022.09.26 |
---|---|
업무에 바로 쓰는 SQL튜닝 입문 - 5교시(인덱스활용불가) (0) | 2022.09.26 |
업무에 바로 쓰는 SQL튜닝 입문 - 4교시(결합인덱스) (0) | 2022.09.25 |
업무에 바로 쓰는 SQL튜닝 입문 - 3교시(인덱스) - 1 (0) | 2022.09.25 |
업무에 바로 쓰는 SQL튜닝 입문 - 3교시(인덱스) (0) | 2022.09.25 |