SQLP

시험 직전 요약장

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

이론 목록

OR Expansion·조건 이행·Join Elimination: 분기·파생 조건·불필요 조인 제거

원래 이론 →

판단 기준

혼동하기 쉬운 판단정확한 기준
OR이 있으면 항상 OR Expansion이 적용된다Validity와 Cost에 따라 선택되며 Hint·구조·Version도 영향을 준다
단순 UNION ALL 재작성은 원래 OR과 항상 같다동시 만족 행을 다음 Branch에서 제외하는 배타 조건이 필요하다
LNNVL은 NOT과 완전히 같다FALSE뿐 아니라 UNKNOWN도 TRUE로 처리한다
INLIST ITERATOR는 OR Expansion의 다른 이름이다하나의 Operation 반복과 여러 Branch 분리는 다른 구조다
USE_CONCAT은 단지 후보만 추가한다공식적으로 비용 고려를 우회해 OR 조건의 UNION ALL 변환을 지시한다
파생 Predicate는 SQL Text에 반드시 나타난다Optimizer가 내부적으로 도출해 Access Predicate에 사용할 수 있다
FK만 있으면 Inner Join Parent를 항상 제거할 수 있다Unique, Match 존재, NULL 배제, Column 미사용, 신뢰 가능한 관계가 필요하다
Left Outer Join 제거에도 Parent 존재 보장이 항상 필요하다왼쪽 행은 보존되므로 오른쪽의 최대 한 행 Match 보장이 더 핵심일 수 있다
NOVALIDATE Constraint는 Optimizer가 절대 사용하지 않는다Integrity 설정에 따라 Join Elimination에 사용될 수 있어 실제 데이터 위반 시 위험하다
Plan에서 Table이 보이지 않으면 Join Elimination이 확정이다View Merging·Unnesting·MV Rewrite·Alias 변화를 함께 확인해야 한다

이 부분의 원문 →

헷갈리는 개념

예시·텍스트
1. OR의 각 조건과 동일 행의 동시 만족 가능성을 표시한다.
2. NULL Bind·NULL Column·두 조건 동시 TRUE 데이터를 준비한다.
3. 원본 SQL의 결과 행과 중복을 기준값으로 저장한다.
4. 기본 Plan에서 VW_ORE·UNION-ALL·LNNVL·INLIST 여부를 확인한다.
5. USE_CONCAT과 NO_EXPAND를 Query Block에 정확히 적용해 비교한다.
6. Branch별 Starts·A-Rows·Buffers·A-Time과 전체 합계를 비교한다.
7. Join 등식에서 도출 가능한 반대편 Predicate를 표시한다.
8. 데이터 타입·함수·NULL·Outer Join 때문에 이행이 안전한지 검증한다.
9. 제거 후보 Table의 Column이 SELECT·Filter·Group·Order·다른 Join에 쓰이는지 확인한다.
10. PK·Unique·FK·NOT NULL·VALIDATE·RELY·Integrity 설정을 확인한다.
11. SQL Text와 실제 Cursor의 Alias·Outline·Predicate·Row Source를 대조한다.
12. 다양한 Bind 조합에서 결과와 성능이 모두 안정적인지 검증한다.

이 부분의 원문 →

대표 계산·예제

예를 들어 다음 구조를 생각할 수 있습니다.

이 부분의 원문 →

내 최근 연습 오답

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

학습 기록 →

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