문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| study:oracle:datadb:2week_1:chap4 [2010/05/13 18:47] – starlits | study:oracle:datadb:2week_1:chap4 [2025/10/03 22:30] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 292: | 줄 292: | ||
| ==== 인라인 서브쿼리의 병합 ==== | ==== 인라인 서브쿼리의 병합 ==== | ||
| + | |||
| + | |||
| + | == 뷰쿼리 == | ||
| + | <code sql> | ||
| + | CREATE VIEW emp_group_by_deptno | ||
| + | AS | ||
| + | | ||
| + | | ||
| + | | ||
| + | FROM emp | ||
| + | GROUP BY deptno; | ||
| + | </ | ||
| + | |||
| + | == 액세스쿼리 == | ||
| + | <code sql> | ||
| + | SELECT e.ename, e.sal | ||
| + | FROM emp e, dept d | ||
| + | WHERE (e.deptno, e.sal ) IN (SELECT deptno, avg_sal | ||
| + | FROM emp_group_by_deptno) | ||
| + | AND e.deptno = d.deptno | ||
| + | AND d.loc = ' | ||
| + | </ | ||
| + | - 실행계획을 수립하는 입장에서 보면 반드시 평균급여를 미리 구해야 할 필요는 없다 | ||
| + | |||
| + | == MERGE 힌트사용시 == | ||
| + | <code sql> | ||
| + | FILTER | ||
| + | SORT (GROUP BY) | ||
| + | HASH JOIN | ||
| + | TABLE ACCESS (FULL) OF ' | ||
| + | TABLE ACCESS (FULL) OF ' | ||
| + | </ | ||
| + | |||
| + | == NO_MERGE 힌트사용시== | ||
| + | <code sql> | ||
| + | HASH JOIN | ||
| + | TABLE ACCESS (FULL) OF ' | ||
| + | | ||
| + | SORT (GROUP BY) | ||
| + | TABLE ACCESS (FULL) OF ' | ||
| + | </ | ||
| + | - 뷰병합을 하지 않는 것이 유리 | ||
| + | |||
| + | === 결론 === | ||
| + | - 처리범위를 줄일 수 있는 조건들이 많아 인라인뷰로 파고들어 가는 것이 일 량을 줄일 수 있다면 뷰병합이 유리 | ||
| + | - 파라메터는 기본값을 ‘TRUE’로 하고, 필요하다면 NO_MERGE 힌트를 적용하는 것이 바람직함 | ||
| ===== 사용자 정의 바인드 변수의 엿보기(Peeking) ===== | ===== 사용자 정의 바인드 변수의 엿보기(Peeking) ===== | ||