오라클에서 쿼리튜닝을 조금 해야 하는데, 궁금한 점이 생겼습니다.
1번 케이스 : SELECT /*+ gather_plan_statistics */ /*+ LEADING(C B D) INDEX(C IX_인덱스이름_03) USE_NL(B) USE_NL(D) */
2번 케이스 : SELECT /*+ gather_plan_statistics LEADING(C B D) INDEX(C IX_인덱스이름_03) USE_NL(B) USE_NL(D) */
1번 케이스대로 쿼리 수행 후
select * from table(dbms_xplan.display_cursor(null,null,'advanced allstats last')) ;
결과를 확인하면
Cost : 38225
Buffers: 23M
수행시간: 2분 34초
2번 케이스대로 쿼리수행 후 결과확인하면
Cost : 57949
Buffers: 664K
수행시간: 2초 이내
왜 이런 차이가 발생하는지 궁금합니다.
오라클 힌트는 SELECT 당 1개만 먹히는거로 아는데 서로 다르게 결과가 나와서요
** 추가로
SELECT /*+ gather_plan_statistics */
* FROM ( 확인하고자하는 쿼리 )
select * from table(dbms_xplan.display_cursor(null,null,'advanced allstats last')) ;
이렇게 확인하라고도 나와있는데 이 방식은 잘못된건가요? 무슨차이가 있나요?