행위

"실행계획 조인 읽는 순서"의 두 판 사이의 차이

DB CAFE

(내용을 "== 실행계획에서 조인 읽는 방법 == 파일:조인순서.jpg ---- Category:oracle"(으)로 바꿈)
(태그: 대체됨)
2번째 줄: 2번째 줄:
 
[[파일:조인순서.jpg]]
 
[[파일:조인순서.jpg]]
 
----
 
----
 
 
== 조인시 성능 튜닝 요소 ==
 
=== NL조인 ===
 
# NL조인은 Random 액세스 발생량에 의해 성능이 결정됨
 
# WHERE 조건이 없는 경우에는 드라이빙테이블(OUTER)은 작은 쪽 집합을 드라이빙하는 것이 유리합니다.
 
# WHERE 조건이 있는 경우에는 WHERE 조건절 컬럼의 인덱스 존재 및 구성여부에 따라 성능이 결정되며, 작은 쪽 집합을 드라이빙하는 것이 유리합니다.
 
# INNER쪽 테이블의 조인 컬럼에 인덱스 존재 여부가 성능에 결정적인 요소임.
 
## NL조인에서는 Random 액세스 발생량 외에도 Inner 쪽 인덱스 구성 및 조건절 연산자 형태에 따라 성능이 크게 좌우되는데, 인덱스 스캔 효율에 차이가 생기기 때문.
 
 
=== 해시 조인 ===
 
# Build Input을 작은 쪽 테이블로 드라이빙하는것이 유리 (SWAP_JOIN_INPUTS 힌트로 조절)
 
# 해시조인은 Hash Area에 Build Input을 모두 채울 수 있느냐가 관건
 
 
=== 소트머지 조인 ===
 
# 소트머지 조인과 해시조인에서도 순서가 중요
 
# 소트머지 조인은 PGA상에서 정렬된 집합(Sort Area)을 통해 조인 액세스가 일어나기 때문에 Random 액세스 발생량 보다 소트 부하에 의해 성능 결정됨.
 
## 즉, 디스크 소트가 발생할 정도의 큰 테이블을 포함할 때는 큰 테이블을 드라이빙하는 것이 빠르지만 메모리 소트방식으로 조인할 때는 적은 쪽 테이블을 드라이빙하는 것이 조금 더 빠름
 
 
[[Category:oracle]]
 
[[Category:oracle]]

2023년 3월 30일 (목) 23:42 판

thumb_up 추천메뉴 바로가기


실행계획에서 조인 읽는 방법[편집]

조인순서.jpg