본문 바로가기

PostgreSQL

JOIN

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