테마
마케팅팀은 캠페인을 설계할 때마다 분석 마트 DW_ORD_BIG에서 등급, 지역, 주문 상태, 기간을 조합해 대상 주문의 건수와 금액을 뽑는다. 조건은 캠페인마다 달라서 IN 목록과 부정 조건(<>), 기간이 섞인다. 하루 수백 번 실행된다.
이번 캠페인 조건은 A등급, 지역 RGN05와 RGN07, 취소 제외, 2024년 2분기다. 옵티마이저는 「지역별 월 매출」 리포트용 인덱스를 골랐다.
DW_ORD_BIG 주문 분석 마트: 매일 밤 T_ORD_BIG에 M_CUS의 CUS_GD · RGN_ID · GND_TP와 월 ORD_YM을 붙여 ORD_DT 순으로 다시 만든다(CTAS) · 낮에는 읽기만 한다 · 1,000,000행 · 6,980블록(블록당 약 143행) · ORD_ST는 NOT NULLCUS_GD A 1% · B 9% · C 90% · RGN_ID 8곳에 12.5%씩 · ORD_ST COMPLETE 90% · PENDING 8% · CANCEL 2% · 2024년 2분기 83,083건IX_DWO_YM_RGN (ORD_YM, RGN_ID): 「지역별 월 매출」 리포트용 B-tree · BLEVEL 2 · 리프 약 2,900블록 · 다른 인덱스는 없다 · 통계 최신SELECT COUNT(*) AS ord_cnt, SUM(ORD_AMT) AS ord_amt
FROM DW_ORD_BIG
WHERE CUS_GD = 'A'
AND RGN_ID IN ('RGN05', 'RGN07')
AND ORD_ST <> 'CANCEL'
AND ORD_YM BETWEEN '202404' AND '202406'
---------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.03 | 1378 |
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.03 | 1378 |
|* 2 | TABLE ACCESS BY INDEX ROWID BATCHED| DW_ORD_BIG | 1 | 204 | 415 |00:00:00.03 | 1378 |
|* 3 | INDEX RANGE SCAN | IX_DWO_YM_RGN | 1 | 20770 | 20770 |00:00:00.01 | 218 |
---------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(("CUS_GD"='A' AND "ORD_ST"<>'CANCEL'))
3 - access("ORD_YM">='202404' AND "ORD_YM"<='202406')
filter(("RGN_ID"='RGN05' OR "RGN_ID"='RGN07'))