▪ 사용자가 작성한 쿼리를 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 |