테마
본사 영업관리팀의 「야간 판매 점검」은 영업일 22시부터 다음 날 06시까지의 판매를 매장별, 일자별로 센다. 야간 운영 매장을 점검하려고 매일 아침 담당자 다섯 명이 몇 번씩 돌린다.
화면은 시작과 끝을 'YYYYMMDDHH24MISS' 14자리 문자열(:v_from, :v_to)로 넘긴다. 아래는 2023년 6월 30일 22시 ~ 7월 1일 06시('20230630220000' ~ '20230701060000')를 넘긴 실행이다.
CF10_P 판매(파티션 복사본, 문제 설정): CF10 500,000행을 PARTITION BY RANGE (SLE_DT) 월별 24칸(P202201 ~ P202312, 경계는 VALUES LESS THAN ('20220201') 꼴)과 빈 PMAX 1칸으로 나눠 CTAS로 지었다. 칸 하나는 약 20,800행이고 FULL로 읽으면 약 191블록, 24칸 전체는 약 4,610블록이다.SLE_DT는 VARCHAR2(8) '20230630', SLE_HMS는 VARCHAR2(6) '223015'이다. 둘 다 자릿수가 고정이고 숫자만 들어 있다(교재 03화 실측).P202306은 18번째 칸, P202307은 19번째 칸이다. 22시 ~ 06시 판매는 하룻밤에 약 40건이다.SELECT SHP_NO, SLE_DT, COUNT(*) AS night_cnt
FROM CF10_P
WHERE SLE_DT || SLE_HMS BETWEEN :v_from AND :v_to
GROUP BY SHP_NO, SLE_DT
ORDER BY SHP_NO, SLE_DT
------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Pstart | Pstop |
------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 10 | 00:00:00.09 | 4610 | | |
| 1 | SORT GROUP BY | | 1 | 1250 | 10 | 00:00:00.09 | 4610 | | |
| 2 | PARTITION RANGE ALL | | 1 | 1250 | 41 | 00:00:00.09 | 4610 | 1 | 25 |
|* 3 | TABLE ACCESS FULL | CF10_P | 24 | 1250 | 41 | 00:00:00.08 | 4610 | 1 | 25 |
------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter(("SLE_DT"||"SLE_HMS">=:V_FROM AND "SLE_DT"||"SLE_HMS"<=:V_TO))