"실행계획 조인 읽는 순서"의 두 판 사이의 차이
DB CAFE
(→실행계획에서 조인 읽는 순서) |
|||
1번째 줄: | 1번째 줄: | ||
+ | == 실행계획에서 조인 읽는 방법 == | ||
+ | [[파일:조인순서.jpg]] | ||
+ | [[Category:oracle]] | ||
+ | |||
== NL조인 == | == NL조인 == | ||
# NL조인은 Random 액세스 발생량에 의해 성능이 결정됨 | # NL조인은 Random 액세스 발생량에 의해 성능이 결정됨 | ||
5번째 줄: | 9번째 줄: | ||
# INNER쪽 테이블의 조인 컬럼에 인덱스 존재 여부가 성능에 결정적인 요소임. | # INNER쪽 테이블의 조인 컬럼에 인덱스 존재 여부가 성능에 결정적인 요소임. | ||
## NL조인에서는 Random 액세스 발생량 외에도 Inner 쪽 인덱스 구성 및 조건절 연산자 형태에 따라 성능이 크게 좌우되는데, 인덱스 스캔 효율에 차이가 생기기 때문. | ## NL조인에서는 Random 액세스 발생량 외에도 Inner 쪽 인덱스 구성 및 조건절 연산자 형태에 따라 성능이 크게 좌우되는데, 인덱스 스캔 효율에 차이가 생기기 때문. | ||
+ | |||
+ | == 해시 조인 == | ||
+ | # Build Input을 작은 쪽 테이블로 드라이빙하는것이 유리 (SWAP_JOIN_INPUTS 힌트로 조절) | ||
+ | # 해시조인은 Hash Area에 Build Input을 모두 채울 수 있느냐가 관건 | ||
== 소트머지 조인 == | == 소트머지 조인 == | ||
10번째 줄: | 18번째 줄: | ||
# 소트머지 조인은 PGA상에서 정렬된 집합(Sort Area)을 통해 조인 액세스가 일어나기 때문에 Random 액세스 발생량 보다 소트 부하에 의해 성능 결정됨. | # 소트머지 조인은 PGA상에서 정렬된 집합(Sort Area)을 통해 조인 액세스가 일어나기 때문에 Random 액세스 발생량 보다 소트 부하에 의해 성능 결정됨. | ||
## 즉, 디스크 소트가 발생할 정도의 큰 테이블을 포함할 때는 큰 테이블을 드라이빙하는 것이 빠르지만 메모리 소트방식으로 조인할 때는 적은 쪽 테이블을 드라이빙하는 것이 조금 더 빠름 | ## 즉, 디스크 소트가 발생할 정도의 큰 테이블을 포함할 때는 큰 테이블을 드라이빙하는 것이 빠르지만 메모리 소트방식으로 조인할 때는 적은 쪽 테이블을 드라이빙하는 것이 조금 더 빠름 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2023년 2월 9일 (목) 23:34 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 실행계획에서 조인 읽는 방법[편집]
2 NL조인[편집]
- NL조인은 Random 액세스 발생량에 의해 성능이 결정됨
- WHERE 조건이 없는 경우에는 드라이빙테이블(OUTER)은 작은 쪽 집합을 드라이빙하는 것이 유리합니다.
- WHERE 조건이 있는 경우에는 WHERE 조건절 컬럼의 인덱스 존재 및 구성여부에 따라 성능이 결정되며, 작은 쪽 집합을 드라이빙하는 것이 유리합니다.
- INNER쪽 테이블의 조인 컬럼에 인덱스 존재 여부가 성능에 결정적인 요소임.
- NL조인에서는 Random 액세스 발생량 외에도 Inner 쪽 인덱스 구성 및 조건절 연산자 형태에 따라 성능이 크게 좌우되는데, 인덱스 스캔 효율에 차이가 생기기 때문.
3 해시 조인[편집]
- Build Input을 작은 쪽 테이블로 드라이빙하는것이 유리 (SWAP_JOIN_INPUTS 힌트로 조절)
- 해시조인은 Hash Area에 Build Input을 모두 채울 수 있느냐가 관건
4 소트머지 조인[편집]
- 소트머지 조인과 해시조인에서도 순서가 중요
- 소트머지 조인은 PGA상에서 정렬된 집합(Sort Area)을 통해 조인 액세스가 일어나기 때문에 Random 액세스 발생량 보다 소트 부하에 의해 성능 결정됨.
- 즉, 디스크 소트가 발생할 정도의 큰 테이블을 포함할 때는 큰 테이블을 드라이빙하는 것이 빠르지만 메모리 소트방식으로 조인할 때는 적은 쪽 테이블을 드라이빙하는 것이 조금 더 빠름