테마
정산팀의 「일별 결제 대기 건수」는 달을 고르면 PENDING 주문이 있는 날짜와 건수를 보여 준다. 하루 수십 번 연다. 실행계획을 본 조민우가 이렇게 말했다. "FROM에는 T_ORD_BIG 하나뿐인데 VIEW와 HASH JOIN이 보인다. 통계가 꼬인 것 같으니 FULL 힌트로 고정하자." 아래는 2024년 11월을 골랐을 때다.
T_ORD_BIG: 1,000,000행 · 5,826블록 · 2024년 11월 27,390건 · 그중 PENDING 2,190건(6일) · PENDING 전체 80,000건IX_ORD_BIG_DT (ORD_DT): BLEVEL 2 · 리프 2,653블록 · CLUSTERING_FACTOR 약 1,000,000IX_ORD_BIG_ST (ORD_ST): BLEVEL 2 · 리프 2,775블록 · CLUSTERING_FACTOR 17,478 · ORD_ST에 히스토그램SUM(ORD_AMT))도 보여 달라는 요청이 와 있다SELECT ORD_DT, COUNT(*) AS pend_cnt
FROM T_ORD_BIG
WHERE ORD_ST = 'PENDING'
AND ORD_DT >= TO_DATE(:v_from, 'YYYYMMDD')
AND ORD_DT < TO_DATE(:v_to, 'YYYYMMDD') + 1
GROUP BY ORD_DT
ORDER BY ORD_DT
------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Used-Mem |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 6 |00:00:00.02 | 302 | |
| 1 | SORT GROUP BY | | 1 | 30 | 6 |00:00:00.02 | 302 | 2048 (0)|
|* 2 | FILTER | | 1 | | 2190 |00:00:00.02 | 302 | |
|* 3 | VIEW | index$_join$_001 | 1 | 2191 | 2190 |00:00:00.02 | 302 | |
|* 4 | HASH JOIN | | 1 | | 2190 |00:00:00.02 | 302 | 1624K (0)|
|* 5 | INDEX RANGE SCAN | IX_ORD_BIG_DT | 1 | 27390 | 27390 |00:00:00.01 | 76 | |
|* 6 | INDEX RANGE SCAN | IX_ORD_BIG_ST | 1 | 80000 | 80000 |00:00:00.01 | 226 | |
------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(TO_DATE(:V_TO,'YYYYMMDD')+1>TO_DATE(:V_FROM,'YYYYMMDD'))
3 - filter(("ORD_ST"='PENDING' AND "ORD_DT">=TO_DATE(:V_FROM,'YYYYMMDD') AND
"ORD_DT"<TO_DATE(:V_TO,'YYYYMMDD')+1))
4 - access(ROWID=ROWID)
5 - access("ORD_DT">=TO_DATE(:V_FROM,'YYYYMMDD') AND "ORD_DT"<TO_DATE(:V_TO,'YYYYMMDD')+1)
6 - access("ORD_ST"='PENDING')
[참고 — 같은 조건 FULL 강제] 5,826
SUM(ORD_AMT)를 더하면 실행계획이 어떻게 바뀔지 예상하시오.