대용량데이터베이스 동영상 강의 내용 질문입니다 0 3 2,352

by 느낌표 [Oracle 기초] 실행계획 옵티마이져 [2014.09.18 00:26:46]


안녕하세요
대용량 데이터베이스 동영상을 보면서 궁금한 점이 있어 질문드립니다.

SELECT B.DNAME, A.EMPNO, A.ENAME, A.SAL
  FROM EMP A, DEPT B
 WHERE A.DEPTNO = B.DEPTNO

위와 같은 쿼리이고 데이터가 DEPT는 100건, DEPT가 10만건이라고 가정했을때
옵티마이져는 EMP 테이블을 한번 풀스캔하고 유니크인덱스를 활용하여 DEPT 테이블 조회한다는데 (이경우 10만번 조회)
실제로 쿼리를 돌려보니 아래와 같은 plan이 나타납니다.

Execution Plan
--------------------------------------------------------------------------------
   0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=6 Card=14 Bytes=420)
   1    0   MERGE JOIN (Cost=6 Card=14 Bytes=420)
   2    1     TABLE ACCESS (BY INDEX ROWID) OF 'DEPT' (TABLE) (Cost=2 Card=4 Bytes=52)
   3    2       INDEX (FULL SCAN) OF 'PK_DEPT' (INDEX (UNIQUE)) (Cost=1 Card=4)
   4    1     SORT (JOIN) (Cost=4 Card=14 Bytes=238)
   5    4       TABLE ACCESS (FULL) OF 'EMP' (TABLE) (Cost=3 Card=14 Bytes=238)


테스트환경은 오라클 10g입니다. (기본설정)

이것이 동영상에서 가정한 환경(데이터건수나 옵티마이저모드)과 달라서인지 궁금합니다.

by 세거니 [2014.09.18 12:56:07]

동영상은 NL Join 설명일꺼 같은데요..

Plan 은 Merge Join 이라 다르게 나온거 같아요...

힌트를 줘서 Plan을 다시 보셔야 할꺼 같은데요...


by 느낌표 [2014.09.18 15:44:58]

힌트를 RULE로 해서 실행하니 말씀하신대로 그리고 동영상에서 나온대로 NL 조인하여

수행이 되네요^^

RBO 에서는 인덱스가 없는 테이블이 먼저 드라이빙이 되는가 봅니다.

이제 막 튜닝 공부를 하게되어 뒤죽박죽이네요

말씀 감사합니다^^


by 킬리만자로 [2015.01.03 19:05:03]

동영상은 무슨 동영상을 말씀하시는 건지요??

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