테마
본사 영업기획팀은 BI 도구의 「판매 건수 조회」에서 매장, 요일, 시간대, 월을 마음대로 골라 판매 건수를 센다. 고르는 조합이 매번 달라서 하루 약 3,000번, 서로 다른 모양의 COUNT가 들어온다.
운영 판매 테이블을 건드리지 않으려고 매일 새벽 분석 사본 CF10_DW를 다시 만들어 쓰는데, 건수 하나에 사본 전체를 읽는다. 조민우는 "자주 쓰는 조합마다 결합 인덱스를 만들자"고 한다. 아래는 매장 1003, 토요일, 12시대다.
CF10_DW 판매 분석 사본: 매일 04:00에 CF10에서 CTAS로 다시 만든다 · 낮에는 읽기만 한다 · 500,000행 · 5,040블록 · CF10 컬럼에 시간대 SLE_HH(SUBSTR(SLE_HMS, 1, 2))와 월 SLE_YM을 더했다SHP_NO 다섯 곳에 약 10만 건씩 · SLE_DOW 일곱 값에 약 14%씩 · SLE_HH 14가지이고 12시대가 약 52% · SLE_YM 24가지SELECT COUNT(*)
FROM CF10_DW
WHERE SHP_NO = :v_shp
AND SLE_DOW = :v_dow
AND SLE_HH = :v_hh
------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.03 | 5040 |
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.03 | 5040 |
|* 2 | TABLE ACCESS FULL | CF10_DW | 1 | 1020 | 7488 |00:00:00.03 | 5040 |
------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(("SLE_HH"=:V_HH AND "SLE_DOW"=:V_DOW AND "SHP_NO"=:V_SHP))
CF10에 같은 인덱스를 만들면 안 되는 이유도 설명하시오.