"실행계획 조인 읽는 순서"의 두 판 사이의 차이
DB CAFE
(→실행계획에서 조인 읽는 방법) |
|||
(같은 사용자의 중간 판 11개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | == | + | == 실행계획에서 조인 읽는 방법 == |
− | # | + | # 안에서 바깥으로 |
− | # | + | # 위에서 아래로 |
− | + | [[파일:조인순서.jpg]] | |
− | + | === 예외적인 사항 === | |
− | + | # 해시조인 시 BUILD INPUT 처리시 | |
− | + | <source lang=sql> | |
− | == | + | SELECT /*+ leading(E) use_hash(D) swap_join_inputs(D) */ E.EMPNO, E.ENAME, E.SAL, D.DNAME |
− | + | FROM DEPT D | |
− | + | INNER JOIN EMP E | |
− | + | ON D.DEPTNO = E.DEPTNO | |
+ | AND E.SAL > 1500 | ||
+ | AND E.JOB = 'SALESMAN' | ||
+ | WHERE D.DNAME = 'SALES' | ||
+ | ; | ||
− | |||
− | |||
− | |||
− | = | + | Execution plan |
− | [[ | + | ----------------------------------------------------------------- |
+ | | Id | Operation | Name | Card | Bytes | Cost (%CPU)| | ||
+ | ----------------------------------------------------------------- | ||
+ | | 0| SELECT STATEMENT | | 1 | 32 | 8 (0)| | ||
+ | |* 1| HASH JOIN | | 1 | 32 | 8 (0)| | ||
+ | |* 2| TABLE ACCESS FULL | DEPT | 1 | 13 | 4 (0)| | ||
+ | |* 3| TABLE ACCESS FULL | EMP | 2 | 50 | 4 (0)| | ||
+ | ----------------------------------------------------------------- | ||
+ | |||
+ | Predicate Information (identified by operation id): | ||
+ | ----------------------------------------------------------------- | ||
+ | 1 - access("D"."DEPTNO"="E"."DEPTNO") | ||
+ | ----------------------------------------------------------------- | ||
+ | </source> | ||
+ | # 해시조인 시 EARLIER FILTER 서브쿼리 | ||
+ | ## [[EARLIER Filter 서브쿼리]] | ||
+ | ---- | ||
[[Category:oracle]] | [[Category:oracle]] |
2023년 6월 27일 (화) 13:33 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 실행계획에서 조인 읽는 방법[편집]
- 안에서 바깥으로
- 위에서 아래로
1.1 예외적인 사항[편집]
- 해시조인 시 BUILD INPUT 처리시
SELECT /*+ leading(E) use_hash(D) swap_join_inputs(D) */ E.EMPNO, E.ENAME, E.SAL, D.DNAME
FROM DEPT D
INNER JOIN EMP E
ON D.DEPTNO = E.DEPTNO
AND E.SAL > 1500
AND E.JOB = 'SALESMAN'
WHERE D.DNAME = 'SALES'
;
Execution plan
-----------------------------------------------------------------
| Id | Operation | Name | Card | Bytes | Cost (%CPU)|
-----------------------------------------------------------------
| 0| SELECT STATEMENT | | 1 | 32 | 8 (0)|
|* 1| HASH JOIN | | 1 | 32 | 8 (0)|
|* 2| TABLE ACCESS FULL | DEPT | 1 | 13 | 4 (0)|
|* 3| TABLE ACCESS FULL | EMP | 2 | 50 | 4 (0)|
-----------------------------------------------------------------
Predicate Information (identified by operation id):
-----------------------------------------------------------------
1 - access("D"."DEPTNO"="E"."DEPTNO")
-----------------------------------------------------------------
- 해시조인 시 EARLIER FILTER 서브쿼리