인덱스 질문 0 1 715

by 알렌 [Oracle 기초] [2020.01.04 14:47:06]


 ~~ 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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입