본문 바로가기

PostgreSQL

Query Rewrite (쿼리 변환)

사용자가 작성한 쿼리를 Optimizer가 더 좋은 실행계획을 수립할 수 있는 형태로 변경하는 것을 Query Rewrite라고 한다.

1) 서브 쿼리 Collapse : 서브 쿼리를 Main 쿼리에 병합하는 기법 (Sub query unnest)

2) View Merging : 뷰 또는 인라인 뷰를 풀어헤쳐 테이블 간의 조인으로 변경하는 방법

3) JPPD(조인 조건 push down) : View Merging이 실패한 경우, 조인 조건을 뷰 내부로 밀어 넣는 방법

 

View Merging

뷰를 풀어헤쳐서 테이블 간의 조인으로 변경함으로써 , 다양한 조인 순서와 조인 방법을 선택할 수 있다. 이때 View 2개로 구분된다.

Simple View는 항상 View Merging에 성공한다.

Complex View는 항상 View Merging에 실패한다.

1) Simple View: Group by , Distinct와 같은 Aggregate를 사용하지 않는 뷰

2) Complex View: Group by , Distinct와 같은 Aggregate를 사용하는 뷰

PostgreSQL Simple View Merging을 지원한다.

 

JPPD (Join Predicate Push Down)

2가지 방법을 이용해서 JPPD를 동작하게 할 수 있다.

① 조인 조건을 상수화 한다.

LATERAL View를 사용한다. - 측면 테이블의 조건 입력

이는 JPPD를 직접 구현할 수 있는 매우 획기적인 튜닝 방법이다.

LATERAL View LEFT JOIN도 지원한다.

LEFT JOIN시에는 ON TRUE 키워드를 이용한다

'PostgreSQL' 카테고리의 다른 글

BRIN  (0) 2021.04.23
힌트의 필요성과 PG_HINT_PLAN  (1) 2021.04.23
JOIN  (0) 2021.04.23
액세스 방식  (0) 2021.04.23
Explain  (0) 2021.04.23