PUSH_PRED 힌트는 메인 쿼리의 WHERE 조건을 서브쿼리 내부로 밀어넣어 서브쿼리에 대한 프레디케이트 푸시다운(Predicate Pushdown) 을 강제하는 힌트입니다. 특정 상황에서는 실행 성능을 최적화할 수 있습니다.

✅ 기본 사용법

위와 같은 구조에서 PUSH_PRED 힌트를 사용하면 sub.sal > 3000 조건이 서브쿼리 내부로 밀려들어가 조인 이후가 아니라 조인 전에 필터링될 가능성이 커집니다.

✅ 언제 사용해야 하나?

  • 인라인 뷰(서브쿼리)가 포함된 SQL에서 WHERE 조건이 서브쿼리 내부에서 먼저 적용될 때 성능이 좋아질 경우
  • 불필요한 데이터 스캔을 줄이기 위해 서브쿼리 내부에서 미리 필터링할 때
  • 서브쿼리가 복잡한 조인을 포함하는 경우, 먼저 필터링하는 것이 효율적일 때

✅ 주의할 점

  • PUSH_PRED가 항상 성능을 향상시키는 것은 아닙니다. 경우에 따라서는 오히려 최적화된 실행 계획을 방해할 수도 있음.
  • Oracle 옵티마이저는 기본적으로 서브쿼리 내 프레디케이트를 자동으로 푸시할 수 있으므로, 강제할 필요가 없는 경우도 있음.

✅ 함께 사용하면 좋은 힌트

  • PUSH_SUBQ
    → 서브쿼리를 INLINE VIEW가 아닌 SCALAR SUBQUERY 형태로 변경하면서 프레디케이트를 푸시할 때 유용함.
  • INLINE
    → 옵티마이저가 서브쿼리를 뷰로 처리하는 것을 방지하고, 인라인 뷰로 유지하도록 강제.

이런 힌트를 조합하면 옵티마이저가 서브쿼리를 최적화하는 방식에 영향을 줄 수 있습니다.

결론:

  • PUSH_PRED는 서브쿼리 내에서 WHERE 조건을 미리 적용하여 불필요한 데이터 스캔을 줄이는 데 유용함.
  • 옵티마이저가 자동으로 적용하는 경우가 많으므로, 실행 계획 확인 후 성능 향상이 필요한 경우에만 사용하는 것이 좋음.
  • 특정 케이스에서는 PUSH_SUBQ, INLINE 힌트와 함께 사용하면 더 효과적일 수 있음.

zerg96

Share
Published by
zerg96

Recent Posts

요양원 선택 전 반드시 확인해야 할 것들, 부모님 맡기기 전에 보세요

요양원 선택 전 반드시 확인해야 할 체크리스트를 공개합니다. 공식 평가 자료 조회법, 방문 시 확인…

2일 ago

공공기관 채용 비리, 내부에서 터져나온 충격 증언

공공기관 채용 비리의 실태와 피해 지원자의 대응법을 정리했습니다. 채용 비리 신고 방법, 공익신고자 보호제도, 취준생…

2일 ago

주식 손실 났을 때 세금 줄이는 방법, 아는 사람만 씁니다

주식 손실을 세금 절약에 활용하는 합법적 방법을 공개합니다. 해외주식 손익통산, ISA 계좌 활용, 연금계좌 절세까지…

2일 ago

음식 배달 늦으면 소비자가 취소할 수 있다, 몰랐던 권리

배달이 예상 시간보다 크게 늦으면 취소·환불을 요청할 수 있습니다. 배달앱별 지연 취소 방법과 잘못 배달됐을…

2일 ago

휴대폰 요금제 바꾸면 연 수십만원 절약, 지금 내 요금제 확인하세요

통신비 절약의 핵심은 요금제 최적화입니다. 내 데이터 사용량 확인법, 알뜰폰 전환 비교, 위약금 없이 요금제…

2일 ago

퇴직금 못 받았다면, 지금 당장 이렇게 하세요

퇴직 후 퇴직금을 받지 못했다면 즉시 노동부에 신고하세요. 지급 기한, 자격 요건, 신고 방법, 소액체당금…

2일 ago