SQLP

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

View Merging·Predicate Pushdown: Query Block 통합과 조건 조기 적용

원래 이론 →

판단 기준

혼동하기 쉬운 판단정확한 기준
View Merging과 Predicate Pushdown은 같은 변환이다Merging은 Query Block 통합, Pushdown은 경계를 유지한 조건 내부 적용이다
실행계획에 VIEW가 있으면 Merging되지 않았다복합 Merging 후 Projection View가 남을 수 있으므로 Alias·Outline·하위 구조를 확인한다
VIEW가 있으면 TEMP에 저장한다TEMP TABLE TRANSFORMATION, LOAD AS SELECT, SYS_TEMP_...를 확인한다
NO_MERGE는 Materialization Hint다Query Block 통합을 제한할 뿐 저장 방식을 항상 강제하지 않는다
PUSH_PRED는 모든 Filter Pushdown을 강제한다공식적으로 Join Predicate Pushdown을 지시하는 Hint다
Grouping Key와 Aggregate 결과 조건은 같은 시점에 Push할 수 있다Grouping Key는 집계 전 가능성이 있지만 Aggregate 결과는 Grouping 후 평가해야 한다
VIEW PUSHED PREDICATE는 항상 빠르다Outer Row 수와 View의 Starts, 총 Buffers를 함께 봐야 한다
Predicate는 안쪽으로 갈수록 항상 안전하다Outer Join·Aggregate·Analytic·Top-N은 평가 시점이 결과를 바꿀 수 있다

이 부분의 원문 →

헷갈리는 개념

다음 Plan은 View Row Source가 남아 있음을 보여 줍니다.

예시·텍스트
VIEW
  HASH GROUP BY
    TABLE ACCESS FULL ORDERS

이 VIEW는 부모 Operation에 행을 전달하는 논리적 경계일 수 있습니다. 행을 Memory나 Temporary Tablespace에 저장했다가 다시 읽었다는 증거는 아닙니다.

Materialization은 다음과 같은 Operation에서 더 직접적으로 확인합니다.

예시·텍스트
TEMP TABLE TRANSFORMATION
  LOAD AS SELECT
  TABLE ACCESS FULL SYS_TEMP_...

분석할 때 다음 질문을 분리합니다.

예시·텍스트
1. 원래 View Query Block이 Merging됐는가?
2. VIEW Row Source가 남아 Streaming되는가?
3. Projection View가 의미 보존용으로 생성됐는가?
4. 결과가 Temporary Object로 Materialize됐는가?

NO_MERGE Hint는 바깥 Query와 Inline View를 하나의 Query Block으로 합치지 않도록 지시합니다. 그러나 View 결과를 반드시 TEMP에 저장하라고 지시하는 Hint는 아닙니다.


이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.