테마
본사 레거시의 「매장 일별 영수증 목록」은 매장과 날짜를 고르면 그날 영수증을 시간순으로 보여 주고, 맨 앞 칸에 순번을 찍는다. 점장 여섯 명과 영업팀이 하루 2,000번쯤 연다.
명동점 점장이 문의를 보냈다. "순번이 1부터가 아니라 384,207부터 시작하고, 번호가 중간중간 건너뛴다." 화면도 한 번에 0.1초씩 걸린다. 순번은 목록 화면들이 함께 쓰는 공통 뷰 V_SLE_LIST에서 만든다.
CF10 판매(영수증): 500,000행 · 4,583블록 · SLE_DT VARCHAR2(8) · 판매일자 순으로 쌓여 있어 하루치(약 700건)가 7블록 안팎에 모여 있다 · 매장 6곳CF10_PK (SLE_NO) · IX_CF10_SLE_DT (SLE_DT): 리프 1,393블록 · 높이 3SHP_NO 1003) 121건 · 통계 최신-- 공통 뷰: 목록 화면들이 순번 칸(SEQ_NO)을 여기서 가져간다
CREATE OR REPLACE VIEW V_SLE_LIST AS
SELECT ROWNUM AS SEQ_NO,
SLE_NO, SLE_DT, SLE_HMS, SHP_NO
FROM CF10;
-- 매장 일별 영수증 목록
SELECT SEQ_NO, SLE_NO, SLE_HMS
FROM V_SLE_LIST
WHERE SHP_NO = :shp
AND SLE_DT = :dt
ORDER BY SLE_HMS;
---------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Used-Mem |
---------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 121 |00:00:00.11 | 4583 | |
| 1 | SORT ORDER BY | | 1 | 118 | 121 |00:00:00.11 | 4583 |13312 (0)|
|* 2 | VIEW | V_SLE_LIST | 1 | 118 | 121 |00:00:00.11 | 4583 | |
| 3 | COUNT | | 1 | | 500K|00:00:00.06 | 4583 | |
| 4 | TABLE ACCESS FULL| CF10 | 1 | 500K| 500K|00:00:00.03 | 4583 | |
---------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(("SLE_DT"=:DT AND "SHP_NO"=:SHP))
[화면에 찍힌 순번 · :shp = 1003, :dt = '20230601']
384,207 · 384,209 · 384,214 · 384,215 · … · 384,912 (121줄)