Page |
부분 |
수정 전 |
수정 후 |
53 |
밑에서 세 번째 줄 |
~DBA들의 취약점 중 많은 부분이 장의 내용을~ |
~DBA들의 취약점 중 많은 부분이 이장의 내용을~ |
77 |
outline data |
ELIMINATE_JOIN(@"SEL$1" "P"@"SEL$1") |
ELIMINATE_JOIN(@"SEL$1" "D"@"SEL$1") |
80 |
제목 |
2.4 OJE Outer-Join Elimination) |
2.4 OJE (Outer-Join Elimination) |
104 |
SQL 윗부분 |
SELECT e.employee_id, e.email, d.department_id |
SELECT /*+ no_merge(@sel$1) */ |
104 |
SQL 아랫부분 |
SQL의 결과는 아래와 같다. |
SQL에 힌트를 사용한 이유는 Lateral View를 보존하기 위해서이다. View가 Merge 된다면 실행계획에서 Lateral View를 볼 수 없다. SQL의 결과는 아래와 같다. |
106 |
직원구분코드 컬럼생성 부분 |
ALTER TABLE EMPLOYEE ADD EMP_KIND VARCHAR2(1) DEFAULT '1' NOT NULL; |
ALTER TABLE EMPLOYEE ADD EMP_KIND VARCHAR2(1) DEFAULT 1 NOT NULL; |
108 |
SQL 윗부분 |
SELECT /*+ GATHER_PLAN_STATISTICS ORDERED */ |
SELECT /*+ GATHER_PLAN_STATISTICS ORDERED NO_MERGE(@SEL$1) NO_MERGE(@SEL$3) */ |
109 |
위에서 네 번째 줄 |
ANSI SQL을 이용함으로써 선택적으로 ~ |
여기서도 View Merging을 발생하지 않게 하기위해 NO_MERGE 힌트를 사용하였다. ANSI SQL을 이용함으로써 선택적으로~ |
109 |
위에서 일곱 번째 줄 |
ANSI SQL을 사용할 수 없는 경우는 아래와 같이 조인절에 DECODE 나 CASE 문을 사용하여도 같은 효과를 누릴 수 있다. |
삭제 후 추가될 내용
|
109 |
밑에서 다섯 번째 줄 |
Lateral View는 ANSI SQL 뿐만 아니라 |
Lateral View 사용하지 않으면서도 선택적으로 조인하고 있다. 이 방법은 ANSI SQL을 사용할 수 없는 환경에서 훌륭한 해결책이 될 것이다. |
120 |
위에서 두 번째 줄 |
Subsumtion |
Subsumption |
121 |
SQL 윗부분 |
Subsumtion |
Subsumption |
158 |
위에서 아홉 번째 줄 |
따라서 Null인 데이터를 찾자마자 Scan을 |
따라서 Null인 데이터를 찾자마자 Scan을 멈출 수 있는 것이다. 추가될 내용의 위치
|
158, 159 |
158 페이지 위에서 열 번째 줄부터 ~ 159 페이지 세 번째 줄 까지 |
하지만 모든 Not In 서브쿼리에 Is Null 조건을 추가하면 결과가 틀려지지 않을까? 부터 |
삭제 후 추가될 내용
|
162 |
10053 Trace 위의 제약사항 부분 |
두 번째로는 Where 절의 Is Null 조건에는 Outer 쪽 테이블의 PK 컬럼만 올 수 있다. 물론 PK 컬럼으로 조인이 되어야 함은 당연한 것이다. |
두 번째로는 Outer Join에 사용된 컬럼과 Is Null 조건에 사용된 컬럼이 동일해야 한다. 즉 d.department_id로 Outer Join하고 d.department_name으로 Is Null 조건을 주면 OJTAJ가 발생되지 않는다. |
105 |
1)번 부분 |
employee 와 department간의 관계가 N:1 이면서 department 쪽이 Outer Join을 사용하였기 때문이다. |
employee 와 department간의 관계가 N:1 이면서 department 쪽이 Outer Join을 사용하였기 때문이다. 반대로 메인쿼리와 Lateral View가 1:N의 관계라면 Lateral View는 결과건수에 영향을 미친다. |
105 |
3)번 부분 |
이러한 모든 상황에서 Later View 내부의 테이블에 ~ |
이러한 모든 상황에서 Lateral View 내부의 테이블에 ~ |
197 |
Column Projection Information 윗부분 |
10053 Trace에는 파라미터 Pivot2를 적용할 경우 SQL 정보가 없다. 부터 197페이지 마지막 까지 모두 삭제 |
삭제 후 추가될 내용 내용이 많아 첨부파일로 처리함. |
빨강색은 삭제이고 파랑색은 추가 입니다.
'The Logical Optimizer' 카테고리의 다른 글
The Logical Optimizer Part 1 - PPT (17) | 2010.07.26 |
---|---|
The Logical Optimizer-서점 (0) | 2010.04.27 |
The Logical Optimizer-Script Download (37) | 2010.04.20 |
저자와의 대화 (36) | 2010.04.20 |
The Logical Optimizer (62) | 2010.04.05 |