Oracle - 쿼리 내 조건 변수 또는 하드코딩 사이 속도 이슈 해결 (ojdbc7,8 download)
문제
복잡한 쿼리 내 조건문에서 MyBatis #{변수} 처리된 구문이 존재.
해당 쿼리가 SQL Developer 에서 실행하면 10분이상 소요, 하지만 Dbeaver 에서 실행 시, 1.13초 걸림.
이는 프로젝트가 구동되는 서버에서도 동일하였음.
해결과정
해당 변수를 하드코딩으로 바꾸자, 두 툴에서 전부 1초대 실행 시간이 나옴.
변수로 실행 시, developer 에서만 느리다는걸 재확인.
프로젝트 jdbc 드라이버 확인 결과 , ojdbc6 으로 확인됨.
developer jdbc 드라이버 확인 결과, ojdbc6 으로 확인됨.
Dbeaver 내 jdbc 드라이버 확인 결과, ojdbc8 로 확인됨.
해결
- 프로젝트가 jdk 1.7 이어서, ojdbc7 로 드라이버를 바꾼 결과 구동 서버에서도 지연없이 잘 돌아가는 것을 확인.
결론
- 아무리 봐도 문제 없어 보이는데 변수처리된 조건문이 느리다면 JDBC 드라이버 버전을 높여보자!
( * 정확한 원인을 몰라, 문제 원인을 설명하기가 어렵습니다. 다만 이렇게 해결하였으니 공유 하고자 올립니다 )