메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

JPPD (Join Predicate PushDown,조인절 PUSHDOWN)

DB스터디
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

JPPD (Join Predicate PushDown)

  vpn_key Join Predicate PushDown (JPPD - 조인 조건 푸시다운)

  playlist_add_check 조인 푸시다운은 뷰 쿼리 밖에 있는 조인 조건이 뷰 안쪽에서 먼저 처리되는 최적화 기법

  1. 뷰의 기본 테이블과 외부 테이블 간의 조인 조건이 뷰 내부로 "밀려들어갑니다-PUSHDOWN".
  2. 이렇게 되면 뷰는 조인에 필요한 데이터만 미리 필터링하여 가져오게 됩니다.


처리 예시

  1. 뷰 `V_EMP`가 `employees` 테이블의 모든 직원을 반환합니다.
  2. 쿼리는 `V_EMP`와 `departments` 테이블을 `department_id`로 조인합니다.
  3. 옵티마이저는 `V_EMP`와 `departments`의 조인 조건을 뷰 내부로 푸시하여, `employees` 테이블에서 `department_id`가 일치하는 행만 먼저 가져오게 합니다.
  • 이 최적화는 뷰를 거치지 않고 직접 조인하는 것과 유사한 효율을 내도록 만듭니다.

참조) VIEW PUSHDOWN (View Pushed Predicate - WHERE절 필터조건 푸시다운)

    View Pushed Predicate - WHERE절 필터조건 푸시다운)
  • 조건절 PUSHDOWN의 주요특징
    • 뷰를 참조하는 쿼리의 `WHERE` 절 조건이 뷰의 기본 테이블로 PUSH 되어 데이터를 읽는 시점에서 필터링이 이루어집니다.
    • 이렇게 되면 뷰는 조인에 필요한 데이터만 미리 필터링하여 가져오게 됩니다.
    • 고정된길이 : 입력값의 크기와 상관없이 항상 동일한 길이의 출력값을 가진다.
    뷰 필터 푸시다운은 뷰 쿼리 밖에 있는 `WHERE` 절의 필터 조건이 뷰 안쪽으로 옮겨져서 먼저 처리되는 최적화 기법.

처리 예시

  1. 뷰 `V_SALES`는 `sales` 테이블의 전체 판매 내역을 반환합니다.
  2. 쿼리는 `V_SALES`에서 `sale_date`가 특정 날짜인 데이터만 조회합니다.
  3. 옵티마이저는 `sale_date` 조건을 `sales` 테이블로 푸시하여, 전체 테이블을 스캔하는 대신 `sale_date`에 해당하는 행만 스캔하게 합니다.

JPPD와 View PUSHDOWN(View Pushed Predicate) 차이점

Join Predicate PushDown VS. View Pushed Predicate
구분 Join Predicate Pushdown View Pushed Predicate
대상 조인 조건 (join 절) 필터 조건 (`WHERE` 절)
원리 뷰 외부의 조인 조건을 뷰 안으로 이동 뷰 외부의 필터 조건을 뷰 안으로 이동
목표 조인에 필요한 데이터만 미리 필터링 필터링에 필요한 데이터만 미리 필터링
결과 불필요한 조인 처리량 감소 불필요한 테이블 I/O 감소


관련글 - View pushed predicate (조건절 PUSHDOWN)