~~ where emp_no = nvl (:b1, emp_no) and hire_date between :b2 and :b3
* emp_no : index1, hire_date : index2
employee 테이블에서 위와 같은 조건일때, 인덱스를 어떻게 탈까요? 실행계획도 궁금합니다;
by 마농
[2020.01.06 08:32:57]
:b1 에 조건이 들어왔을 때엔 emp_no 인덱스, 조건이 안들어왔을 때엔 hire_date 인덱스를 이용해야 효율적입니다.
즉, 실행계획 자체에 두가지 스캔방식이 모두 담기도록 작성된 쿼리입니다.
서로 다른 두개의 쿼리가 union all 으로 결합된 형태처럼 동작하면 됩니다.
실제로 원하는 대로 동작할지는 직접 해보시고 실행계획 확인해 보셔야 합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.