DB/SQL튜닝

업무에 바로 쓰는 SQL튜닝 입문 - 8교시(조인조건 없는 조인)

Kang_hobin 2022. 9. 27. 22:11

사전문제

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이 된다한다!!

 

이건 참고해두자.