문제 링크 : https://velog.io/@yooha9621/47번
🍎 부분은 내가 생각했을때 튜닝하면서 봐야할 핵심부분을 체크한 곳이다.
1. 주문상품_X1 인덱스 스캔
2. 1단계의 20만건을 상품 테이블과 NL조인
3. 2단계의 20만건을 grouping
4. 3단계의 2만건 Sort
[인덱스 재구성]
주문상품_X1 : 할인유형코드 + 주문일시
SELECT /*+ LEADING(P) USE_HASH(O) FULL(P)*/
P.상품코드 , P.상품명 , P.상품가격 , O.총주문수량 , O.총주문금액
FROM ( SELECT /*+ INDEX(A 주문상품_X1) NO_MERGE*/ 상품코드 ,SUM(O.주문수량) 총주문수량 , SUM(O.주문금액) 총주문금액
FROM 주문상품 A
WHERE 주문일시 >= ADD_MONTHS(SYSDATE,-1)
AND 할인유형코드 = 'K890'
GROUP BY 상품코드 ) O , 상품 P
WHERE O.상품코드 = P.상품코드
ORDER BY 총 주문금액 DESC , 상품코드
😥 헷갈렸던 부분
- 🍎push_pred는 쓰지 않는다!
- 왜냐하면 상품(P) 테이블을 먼저 리딩해서 해시맵에 깔아놓고 그 후에 그룹핑한 주문상품 2만건을 하나씩 해시조인 하는 방식으로 풀어냈기 때문이다.