사전문제
1. Cartesian product는 조인하려는 두 테이블에 대해 where절이 없거나 조인 조건 없이 조인을 수행할 때 발생한다?
O : 조인하려는 테이블 사이에 Where 절이 없거나 조인 조건 없이 조인을 수행할 때 Cartesian product가 발생되면 의도적인 Cartesian product가 아니라면 항상 정확한 조인 조건을 사용해야 한다.
2. Cartesian product는 어떤경우에도 사용해선 안되나?
X : Cartesian product는 데이터 복제의 개념을 이용한 반복된 처리로 인해 불리적인 I/O를 상당 부분 개선시킬 수 있으므로 경우에 따라 사용하는 것이 좋다.
Cartesian product?
1. where 절이 없는 조인 수행할 경우
2. 조인을 위한 조건 없이 조인 수행
'데이터 복제'라는 개념을 활용할 때 사용함! 다만 잘못 쓰면 데이터를 부풀리는 원인이 되어 퍼포먼스를 나쁘게 할 수 있음!
예시1)
위의 경우 union all로 emp 테이블이 3개 반복됨.
이걸 카티시안으로 복제해서 쓰자!
위의 sql에선 job, deptno, count(*) 이 세가지만 유의해서 복제하도록 한다.
허.. emp를 job, deptno로 group by 한 후 3배로 불리셨다..
emp는 1번 엑세스만 하므로.. 성능의 향상은 무조건 있다고 하신다.. 허허
너무 복잡한걸..
오라클 11g 이상부턴 UNPIVOT이 된다한다!!
이건 참고해두자.
'DB > SQL튜닝' 카테고리의 다른 글
MYSQL 쿼리 튜닝 - force index, join 컬럼 type 수정 (1) | 2022.09.29 |
---|---|
업무에 바로 쓰는 SQL튜닝 입문 - 9교시(subquery와 함수의 활용) (0) | 2022.09.27 |
업무에 바로 쓰는 SQL튜닝 입문 - 7교시(SORT/MERGE/HASH 조인) - 문제 (0) | 2022.09.27 |
업무에 바로 쓰는 SQL튜닝 입문 - 7교시(SORT/MERGE/HASH 조인) (0) | 2022.09.27 |
업무에 바로 쓰는 SQL튜닝 입문 - 6교시(NESTED LOOPS 조인) - 문제 (2) | 2022.09.27 |