[DB] SQLP 실기문제 - 1

최민석·2021년 8월 9일
0

문제 1

  • 테이블
  • 비효율적 실행 계획

위에서 가장 데이터가 많은 테이블을 드라이빙 테이블로 NL 조인하고 있다.
그리하여 Product 테이블도 2천만건이나 스캔하며 엄청난 Random 액세스를 발생시키고 결국애는 2000만건을 Distinct하여 500건을 추출한다.
이를 튜닝하여 Order테이블을 Filter나 Semi Join으로 검사하여 추출하는 방법을 사용해 보자

튜닝

select c.m_code, c.m_name
from product b, manuf c,
      (select /*+no_unnest index_ffs(orderdt_prod) */ a.prod_id 
       from order a
       where a.orderdt >= 20090101
       group by a.prod_id) a
where b.m_code = c.m_code 
and a.prod_id = b.prod_id
group by c.m_code, c.m_name

위 튜닝 전략은 아래와 같다.

첫째. 실행순서를 작은테이블 부터 큰테이블 순으로 스캔하며 조인한다.
둘째. 해시조인으로 대용량 테이블의 조인 성능을 상승시킨다.
셋쨰. order 테이블의 인덱스 컬럼 추가로 테이블 랜덤 액세스를 방지한다.

profile
🔥🔥🔥🔥 G U N F E 🔥🔥🔥🔥

0개의 댓글