본문 바로가기

빅데이터과정/SQL TUNING

#36_140804_TUNING_STAR JOIN

728x90

# STAR JOIN







노란색 테이블은 아주 큰 대용량 테이블
파란색 테이블이 아주 작은 테이블
파란색 테이블끼리 연결고리가 없어서 연결고리 없이 조인 한다
파란색이 크기가 작은 테이블들인데 sales의 거대한 테이블과 hash나 nl 각각 조인을 하려면 시간을 많이 소비하게 된다
그렇기 때문에 크기가 작은 테이블들을 먼저 조인하고 맨 나중에 가장 큰 테이블인 sales 를 조인하면 속도를 높일 수 있다

# dept ---- emp ---- salgrade
SELECT e.ename, d.loc, e.sal, s.grade
FROM EMP e, DEPT d, SALGRADE s
WHERE e.deptno = d.deptno
AND e.sal BETWEEN s.losal AND s. hisal;



SELECT /*+ leading(d s) */ d.loc, s.grade, d.deptno
FROM DEPT d, SALGRADE s;


cartesian : 연결고리 없이 조인을 수행했다


# dept --- salgrade --- emp
가장 크기가 작은 테이블인 dept를 먼저 조인하고 크기가 큰 emp 테이블을 맨 나중에 조인한다

SELECT /*+ leading(d s e) */ e.ename, d.loc, e.sal, s.grade
FROM EMP e, DEPT d, SALGRADE s
WHERE e.deptno = d.deptno
AND e.sal BETWEEN s.losal AND s. hisal;





cartesian이 수행계획에 나오지만 결국 dept, salgrade 와 조인을 수행하고 empmerge를 확인할 수 있다
원래 hash 조인일 떄는 dept, emp, salgrade 순서로 했을 때 최적이었지만 star join을 이용해서 순서를 바꿔주고 merge 조인을 해주면 속도가 향상되는 것을 확인할 수 있다





문제88. 아래의 SQL 조인 순서와 조인방법을 아래와 같이 하시오(조인순서 : p - t - s, 조인방법 : p,t - merge. t,s - hash)

튜닝 전
select /*+ leading(t s p)  use_hash(s) use_hash(p) */
  p.prod_name, t.CALENDAR_YEAR, sum(s.amount_sold)
  from   sales100  s, times100  t, products100  p
  where   s.time_id = t.time_id
  and  s.prod_id = p.prod_id
    and  t.CALENDAR_YEAR in (2000,2001)
    and p.prod_name like 'Deluxe%'
    group  by  p.prod_name, t.calendar_year;
11초 수행



튜닝 후
select /*+ leading(p t s)  use_merge(t) use_hash(s) */
  p.prod_name, t.CALENDAR_YEAR, sum(s.amount_sold)
  from   sales100  s, times100  t, products100  p
  where   s.time_id = t.time_id
  and  s.prod_id = p.prod_id
    and  t.CALENDAR_YEAR in (2000,2001)
    and p.prod_name like 'Deluxe%'
    group  by  p.prod_name, t.calendar_year;
7초 수행









'빅데이터과정 > SQL TUNING' 카테고리의 다른 글

#37_140805_TUNING_DYNAMIC SAMPLING  (0) 2014.08.05
#37_140805_TUNING_MODEL 절  (0) 2014.08.05
#36_140804_TUNING_UNION TUINING  (0) 2014.08.04
#35_140801_TUNING_JOIN TUNING2  (0) 2014.08.01
#34_140731_TUNING_JOIN TUNING  (0) 2014.07.31