본문 바로가기
데이터베이스 DB

VIEW PUSHED PREDICATE

by tovantablack 2024. 12. 17.
728x90
728x90

VIEW PUSHED PREDICATE는 Oracle 데이터베이스에서 쿼리 최적화와 관련된 개념입니다. 이는 **뷰(View)**를 사용하는 SQL 쿼리에서 성능을 향상시키기 위해 **조건절(Predicate)**을 뷰 내부로 밀어 넣는 최적화 기법입니다.


1. 개념

  • 일반적으로 뷰는 복잡한 SQL 쿼리를 재사용하거나 단순화하는 데 사용됩니다.
  • Pushed Predicate는 뷰에 대한 쿼리에서 제공된 조건이 뷰 정의 내부로 전파되어 적용되는 최적화 기법입니다.
  • 이를 통해 불필요한 데이터 처리량을 줄이고, 쿼리 성능을 향상시킬 수 있습니다.

2. 예시

뷰 정의

다음과 같은 EMP_SALARY_VIEW라는 뷰가 있다고 가정합니다:

CREATE VIEW EMP_SALARY_VIEW AS
SELECT EMP_ID, EMP_NAME, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT = 'SALES';

뷰를 이용한 쿼리

이제 뷰를 사용하는 아래 SQL 쿼리를 실행한다고 가정해 봅시다.

SELECT *
FROM EMP_SALARY_VIEW
WHERE SALARY > 5000;

3. VIEW PUSHED PREDICATE의 동작

  • 기본적으로 SALARY > 5000 조건은 뷰를 사용하는 외부 쿼리에만 존재합니다.
  • Oracle은 이 조건을 뷰 내부로 푸시하여 최적화할 수 있습니다.
  • 결과적으로, 실제 실행 계획에서 쿼리는 다음과 같이 최적화됩니다:
SELECT EMP_ID, EMP_NAME, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT = 'SALES'
  AND SALARY > 5000;

4. 장점

  • 성능 향상: 조건이 뷰 내부로 밀려 들어가므로 더 적은 데이터를 처리하게 됩니다.
  • 불필요한 I/O 감소: 필터링이 일찍 적용되어 결과 집합을 줄일 수 있습니다.
  • 효율적 실행 계획: 쿼리 최적화를 통해 더 효율적인 실행 계획을 생성합니다.

5. 확인 방법

뷰에 대한 Pushed Predicate가 적용되었는지 확인하려면 **실행 계획(EXPLAIN PLAN)**을 사용합니다.

EXPLAIN PLAN FOR
SELECT *
FROM EMP_SALARY_VIEW
WHERE SALARY > 5000;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

실행 계획에서 뷰 내부로 조건이 푸시되었는지 확인할 수 있습니다.


6. 주의 사항

  • 일부 경우 뷰 내부로 조건을 푸시할 수 없는 상황이 있을 수 있습니다. (예: 뷰 정의에 복잡한 함수나 비결정적 요소가 포함된 경우)
  • **물리적 뷰(Materialized View)**와는 다르게 논리적 뷰의 최적화 동작은 쿼리의 특성에 따라 달라질 수 있습니다.

요약

  • VIEW PUSHED PREDICATE는 뷰에 대한 쿼리에서 조건절을 뷰 정의 내부로 밀어 넣는 최적화 기법입니다.
  • 이를 통해 데이터 처리량을 줄이고 쿼리 성능을 향상시킬 수 있습니다.
  • 실행 계획을 확인하면 이 최적화가 적용되었는지 확인할 수 있습니다.
728x90
728x90

'데이터베이스 DB' 카테고리의 다른 글

오라클 힌트 사용법  (0) 2024.12.17
서브쿼리 종류  (0) 2024.12.17
오라클 환경셋팅, 오라클 다운로드 방법  (0) 2024.12.17
SQL 실행 계획 분석 실전  (0) 2024.12.17
SQL 실행 계획 분석하기  (0) 2024.12.17

댓글