PostgreSQL에서 지원하는 조인 방법
▪ Nested Loop 조인
▪ Sort Merge 조인
▪ 해시 조인 (Hybrid 해시 조인 지원)
Nested Loop Join
NL 조인 시에 Materialize가 발생하면 인덱스 생성을 고려해야 한다.
▪ NL 조인 시에 연결 고리에 인덱스가 없으면 Materialize 오퍼레이션이 발생할 수 있다.
▪ 이는 보완책이지 해결책이 아니다. 따라서 인덱스 생성을 고려해야 한다
Hash Join
▪ 해시 조인은 해시 함수를 이용한다. 해시 함수(h)는 다음과 같은 특성을 갖는다.
1. X=Y이면 반드시 h(X)=h(Y) 이다.
2. h(X)≠h(Y)이면 반드시 X≠Y 이다.
3. X≠Y이면 h(X)≠h(Y)인 것이 가장 이상적이다.
4. X≠Y이면 h(X)=h(Y) 일 수도 있다. 이것을 해시 충돌이라고 한다.
In-Memory 해시 조인
▪ In-Memory 해시 조인은 해시 Build 작업을 work_mem 공간 내에서 모두 처리할 수 있을 때 사용하는 방식이다.
In-Memory로 처리할 수 없을 때 사용되는 해시 조인 방식들
▪ 해시 Build 작업을 work_mem 공간 내에서 모두 처리할 수 없을 때 사용하는 방식은 크게 3가지이다.
Outer 조인 개요
▪ Outer 조인은 조인 성공 여부와 무관하게 기준 집합의 레코드를 모두 출력하는 방식이다.
▪ PostgreSQL은 ANSI-SQL 형태의 Outer 조인 문법만을 지원한다.
▪ Outer 조인은 결과 건수에 영향을 미치므로 사용시에 주의해야 한다.
▪ NL Outer 조인은 기준 집합을 항상 먼저 Driving 한다.
▪ Hash Outer 조인은 SWAP INPUT 기능을 제공한다
Hash Right Join, Hash Left Join의 의미
▪ Explain 결과의 Hash Right Join은 기준 테이블이 RIGHT, 즉 Build 테이블이라는 사실을 알려준다.
▪ Explain 결과의 Hash Left Join은 기준 테이블이 LEFT, 즉 Probe 테이블이라는 사실을 알려준다.
'PostgreSQL' 카테고리의 다른 글
힌트의 필요성과 PG_HINT_PLAN (1) | 2021.04.23 |
---|---|
Query Rewrite (쿼리 변환) (0) | 2021.04.23 |
액세스 방식 (0) | 2021.04.23 |
Explain (0) | 2021.04.23 |
COST 계산에 이용되는 파라미터 / 통계 정보 (0) | 2021.04.23 |