oracle optimizer index 선택 관련 궁금 사항 0 1 1,480

by 콩나무 [Oracle Tuning] 튜닝 옵티마이저 플랜 [2017.09.07 16:16:09]


플랜을 보다가 이상한 점이 있어서 문의 드립니다..

혹시 이런 사항에 대해서 아시는분 답변 부탁드려요!!

 

쿼리는 간단한 쿼리 입니다. 파티션 테이블 이고 날짜별 특정 상품에 대한 집계 쿼리 입니다.

관련 조건 들은 바인드 변수로 날짜는 between 조건 입니다.

 

인덱스는 날짜,상품 으로 구성 되어 있는게 제일 베스트 한 인덱스 쿼리 인데,

다른 선행 컬럼,상품으로 된 인덱스를 skip scan으로 타는 걸 옵티마이저가 선택을 합니다.

 

자세히 알아 보고자 10053 event trace를 떠서 확인 결과

인덱스 비용 및 선택 하는 구간 에서 분명 cost가 낮은 인덱스가 있는데, 굳이 skip scan으로 그인덱스를 best로

선택 하고 플랜이 풀리 더라구요.

 

상수 값으로 넣을 시에는 잘 풀리지만 바인드 변수 값이라도 특정 수식에 의해서 cost 계산이 이루어져 선택 한다고 알고 있습니다.

그런대 낮은 cost보다 높은 cost 수치인 인덱스를 skip scan 타서 어떠한 것을 더 봐야 될지 아시는분 의견 부탁 드립니다.

by jkson [2017.09.08 12:19:19]

입력되는 날짜의 범위는 크고 상품 종류가 엄청 작다고 옵티마이저가 판단했다면

스킵스캔이 유리해지는 상황이겠네요.

쿼리를 살짝 수정한 후에 between 날짜 간격을 아주 작게 바인드 변수를 입력하고서도

skip scan하는지 확인해보세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입