by 콩나무 [Oracle Tuning] 튜닝 옵티마이저 플랜 [2017.09.07 16:16:09]
플랜을 보다가 이상한 점이 있어서 문의 드립니다..
혹시 이런 사항에 대해서 아시는분 답변 부탁드려요!!
쿼리는 간단한 쿼리 입니다. 파티션 테이블 이고 날짜별 특정 상품에 대한 집계 쿼리 입니다.
관련 조건 들은 바인드 변수로 날짜는 between 조건 입니다.
인덱스는 날짜,상품 으로 구성 되어 있는게 제일 베스트 한 인덱스 쿼리 인데,
다른 선행 컬럼,상품으로 된 인덱스를 skip scan으로 타는 걸 옵티마이저가 선택을 합니다.
자세히 알아 보고자 10053 event trace를 떠서 확인 결과
인덱스 비용 및 선택 하는 구간 에서 분명 cost가 낮은 인덱스가 있는데, 굳이 skip scan으로 그인덱스를 best로
선택 하고 플랜이 풀리 더라구요.
상수 값으로 넣을 시에는 잘 풀리지만 바인드 변수 값이라도 특정 수식에 의해서 cost 계산이 이루어져 선택 한다고 알고 있습니다.
그런대 낮은 cost보다 높은 cost 수치인 인덱스를 skip scan 타서 어떠한 것을 더 봐야 될지 아시는분 의견 부탁 드립니다.