목록쿼리 변환 (3)
정미나닷컴
조건절 이행- 『(A = B) 이고 (B = C) 이면 (A = C) 이다』는 추론을 통해 새로운 조건절을 내부적으로 생성해 주는 쿼리변환- 『(A > B) 이고 (B > C) 이면 (A > C) 이다』와 같은 추론도 가능- A 테이블에 사용된 필터 조건이 JOIN 조건절을 타고 반대편 B 테이블에 대한 필터 조건으로 이행- 한 테이블 내에서도 두 컬럼간 관계정보를 이용해 조건절 이행SELECT * FROM MINA.DEPT D, MINA.EMP E WHERE E.JOB = 'MANAGER' AND E.DEPT_NO = '10' AND D.DEPT_NO = E.DEPT_NO;-------------------------------------------------------------------------..
조건절 Pushing - 뷰를 참조하는 쿼리 블록의 조건절을 뷰 쿼리 블록 안으로 Pushing하는 기능(옵티마이저가 어떤 이유에서 뷰 Merging에 실패했을 때 2차적으로 시도) 조건절 (Predicate) Pushdown- 쿼리 블록 밖에 있는 조건들을 쿼리 블록 안쪽으로 밀어 넣음SELECT DEPTNO, AVG_SAL FROM (SELECT DEPTNO, AVG(SAL) AVG_SAL FROM EMP GROUP BY DEPTNO) A WHERE DETPNO = 30;Execution Plan-------------------------------------------------------------------------------- 0 SELECT STATEMENT Optimizer=ALL_RO..
쿼리 변환 (Query Transformation)- 쿼리 옵티마이저가 SQL을 분석해 의미적으로 동일(같은 결과를 리턴)하면서도 더 나은 성능이 기대되는 형태로 재작성① 휴리스틱 쿼리 변환결과만 보장된다면 무조건 쿼리 변환 수행 (일종의 Rule-based 최적화 기법)② 비용기반 쿼리 변환변환된 쿼리의 비용이 더 낮을 때만 쿼리 변환 수행 서브쿼리의 분류- 인라인 뷰 (Inline View) : from 절에 나타나는 서브쿼리- 중첩된 서브쿼리 (Nested Subquery) : 결과집합을 한정하기 위해 where 절에 사용된 서브쿼리 * 서브쿼리가 메인쿼리에 있는 컬럼을 참조하는 형태를 '상관관계 있는 서브쿼리'라고 함- 스칼라 서브쿼리 (Scalar Subquery) : 한 레코드당 정확히 하나의..