<오라클 성능 고도화 원리와 해법2> Ch04-10 실체화 뷰 쿼리로 재작성
오라클 성능 고도화 원리와 해법2 - Ch04-10 실체화 뷰 쿼리로 재작성 일반적인 뷰는 주로 하나 또는 그 이상의 테이블에 기초하여 논리적으로 정의한 테이블로서, ‘저장된 쿼리’ 또는 가상의 테이블이라고 불린다. 테이블이 사용될 수 있는 대부분 위치에 뷰를 사용할 수 있고, 뷰에 기초해 또 다른 뷰를 생성할 수도 있다. 정의에서도 알 수 있듯이...
오라클 성능 고도화 원리와 해법2 - Ch04-10 실체화 뷰 쿼리로 재작성 일반적인 뷰는 주로 하나 또는 그 이상의 테이블에 기초하여 논리적으로 정의한 테이블로서, ‘저장된 쿼리’ 또는 가상의 테이블이라고 불린다. 테이블이 사용될 수 있는 대부분 위치에 뷰를 사용할 수 있고, 뷰에 기초해 또 다른 뷰를 생성할 수도 있다. 정의에서도 알 수 있듯이...
오라클 성능 고도화 원리와 해법2 - Ch04-09 Outer 조인을 Inner 조인으로 변환 Outer 조인을 작성할 때 일부 조건절에 Outer 기호(+)를 빠뜨리면 Inner 조인할 때와 같은 결과가 나온다. 이럴 때 옵티마이저는 Outer 조인을 Inner 조인으로 바꾸는 쿼리 변환을 실행한다. 옵티마이저가 이러한 쿼리 변환을 하는 이유는 ...
오라클 성능 고도화 원리와 해법2 - Ch04-08 공통 표현식 제거 같은 조건식이 여러 곳에서 반복 사용될 경우, 오라클은 해당 조건식이 각 로우당 한 번씩만 평가되도록 쿼리를 변환한다. 이를 ‘공통 표현식 제거’라고 하며, _eliminate common_subexpr 파라미터를 통해 제어한다. 예를 들어, 위와 같이 deptno에 대한 조인 ...
오라클 성능 고도화 원리와 해법2 - Ch04-07 OR-Expansion (1) OR- Expansion 기본 만약 아래 쿼리가 그대로 수행된다면 OR 조건 때문에 Full Table Scan으로 처리될 것이다. 아니면 Index Combine(1장3절 참조)이 작동할 수도 있다(스크립트 Ch4 19.kt 참조). select * from em...
오라클 성능 고도화 원리와 해법2 - Ch04-06 조인 제거 1:M 관계인 두 테이블을 조인하는 쿼리문에서 조인문을 제외한 어디에서도 1쪽 테이블을 참조하지 않는다면, 쿼리 수행 시 1쪽 테이블은 읽지 않아도 된다. 결과 집합에 영향을 미치지 않기 때문이다. 옵티마이저는 이 특성을 이용해 M쪽 테이블만 읽도록 쿼리를 변환하는데, 이를 ‘조인 제거(...
오라클 성능 고도화 원리와 해법2 - Ch04-05 조건절 이행 ‘조건절이행(Transitive Predicate Generation, Transtive Closure)’이라고 불리는 이 쿼리 변환을 한마디로 요약하면, “A=B이고(B=C)이면(A=C)이다”는 추론을 통해 새로운 조건을 내부적으로 생성해 주는 쿼리 변환이다. “A>B이고(B&g...
오라클 성능 고도화 원리와 해법2 - Ch04-04 조건절 Pushing 뷰를 액세스하는 쿼리를 최적화할 때 옵티마이저는 우선적으로 뷰 Merging을 고려한다. 하지만 아래와 같은 이유로 뷰 Merging에 실패할 수 있다. • 복합뷰(ComplexView) Merging 기능이 비활성화됨 • 사용자가 no_merge 힌트 사용함 • Non-me...
오라클 성능 고도화 원리와 해법2 - Ch04-03 뷰 Merging (1) 뷰 Merging 이란? < 쿼리1 > SELECT * FROM (SELECT * FROM emp WHERE job = 'SALESMAN') a , (SELECT * FROM dept WHERE loc = 'CHICAGO') b WHERE a.deptno ...
오라클 성능 고도화 원리와 해법2 - Ch04-02 서브쿼리 Unnesting (1) 서브쿼리의 분류 서브쿼리는 SQL 문장 내에서 괄호로 묶인 별도의 쿼리 블록을 의미한다. 즉, 쿼리에 내장된 또 다른 쿼리다. 서브쿼리를 DBMS마다 조금씩 다르게 분류하는데, 오라클 매뉴얼에는 아래 3가지로 분류된다. 인라인뷰(InlineView): FR...
오라클 성능 고도화 원리와 해법2 - Ch04 쿼리 변환 오라클 성능 고도화 원리와 해법2 - Ch04-01 쿼리 변환이란? SELECT DISTINCT S.SNAME FROM S, SP WHERE S.S# = SP.S# AND SP.P# = 'P2' C.J.Date 박사는 그의 유명한 저서 ‘An Introduction to Database ...