본문 바로가기

스터디/오라클 성능고도화 원리와 해법216

쿼리변환 관련 퀴즈- Unnesting 문제 PK 인덱스와 쿼리는 다음과같다. 인덱스를 추가하고 힌트를 추가하거나 where 조건절에 조건을 추가하여 아래와 같은 실행계획이 나오도록 쿼리를 짜보십시오 1~6번 1번 쿼리 7 ~10 2번쿼리 PK 인덱스 --create index empx01 on emp(deptno); --create index dept1_x01 on dept1(deptno); 문제 select * from dept d where /*빈칸 */ and exists (select 'x' from emp e where e.deptno = d.deptno /*빈칸 */ ); 1. ---------------------------------------------------------- | Id | Operation | Name | E.. 2021. 9. 1.
04 쿼리변환 - 서브쿼리 Unnesting 쿼리변환이란? 결과가 동일하더라도 SQL문을 여떤 형태로 작성하느냐에 따라 성능에 차이가 날 수 있으며 쿼리 옵티마이저가 SQL을 분석해 의미적으로 동일하면서도 더 나은 성능이 개대되는 형태로 재작성하는 것을 말합니다. 옵티마이저의 서브엔진으로서 Query Transformer,Estimator,Plan Generator가 있는데 이중 Query Transformer가 그 역할을 담당합니다. 쿼리변환은 두가지 방식으로 작동합니다. 휴리스틱 쿼리변환 : 결과만 보장된다면 무조건 쿼리변환을 수행합니다. 일종의 규칙기반 최적화기법이라고 할 수 있습니다. 비용기반 쿼리변환 : 변환된 쿼리의 비용이 더 낮을 때만 그것을 사용하고, 그렇지 않을 때는 원본 쿼리 그대로 두고 최적화를 수행합니다. 서브쿼리 Unnest.. 2021. 8. 30.
CH02. 조인 원리와 활용 - 05.Outer 조인 (1)Outer NL 조인 NL 조인은 그 특성상 Outer 조인할 때 방향이 한쪽으로 고정되며, Outer기호(+)가 붙지 않은 테이블이 항상 드라이빙 테이블로 선택됩니다. leading 힌트를 이용해 순서를 바꿔보려고 해도 소용 없습니다. select /*+ leading(e) use_nl(d) */ * from dept d, emp e where e.deptno(+)=d.deptno; select /*+ use_nl(d e) */ * from dept d, emp e where e.deptno(+)=d.deptno; 위아래 쿼리 같은 실행계획이 나옵니다. --------------------------------------------------------------------------- | Id .. 2020. 6. 2.
CH02. 조인 원리와 활용 - 04.조인 순서의중요성 조인 순서에 따라 쿼리 수행 성능이 달라질 수 있습니다. 각 조인에 대해서 살펴보겠습니다. NL조인 NL조인에서는 무엇보다 Random 액세스 발생량에 의해 성능이 좌우되는데, 필터조건이 없는 경우에는 드라이빙테이블(조인시 먼저 ACCESS되는 테이블)은 작은 쪽 집합을 드라이빙하는 것이 유리합니다. 필터 조건이 있는 경우에는 인덱스 구성에 따라 유,불리가 경정되며, 비효율이 없게끔 인덱스를 잘 구성해 주기만 하면 역시 작은 쪽 집합을 드라이빙하는 것이 유리합니다. NL조인에서는 Random액세스 발생량 외에도 Inner 쪽 인덱스 구성 및 조건절 연산자 형태에 따라 성능이 크게 좌우되는데, 인덱스 스캔 효율에 차이가 생기기 때문입니다. 소트머지 조인과 해시 조인 소트머지 조인과 해시조인에서도 순서가 중.. 2020. 6. 2.