안녕하세요
대용량 데이터베이스 동영상을 보면서 궁금한 점이 있어 질문드립니다.
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입니다. (기본설정)
이것이 동영상에서 가정한 환경(데이터건수나 옵티마이저모드)과 달라서인지 궁금합니다.