테마
본사 영업관리팀의 「판매 목록」은 최근 판매부터 한 쪽에 20건을 보여 주고, 판매마다 품목 수와 판매 금액(수량 × 단가의 합)을 붙인다. 영업관리팀 30명이 하루 약 4,000번 여는데 첫 쪽부터 2.4초가 걸린다. 판매번호는 판매일자와 그날의 순번으로 매겨서 판매번호 역순이 곧 최신순이다(교재 09화에서 재서 확인한 전제다).
CF10 판매: 500,000행 · 4,583블록 · CF10_PK (SLE_NO) · 판매번호 순서와 쌓인 순서가 거의 같다.CF11 판매상품: 1,096,708행 · 8,204블록 · CF11_PK (SLE_NO, ITM_NO) · 판매당 평균 2.2품목 · 한 판매의 품목 줄은 같은 블록에 모여 있다.SELECT *
FROM (SELECT h.SLE_NO, h.SLE_DT, h.SHP_NO,
COUNT(*) AS itm_cnt,
SUM(d.SLE_QTY * d.SLE_UPRC) AS sle_amt
FROM CF10 h, CF11 d
WHERE d.SLE_NO = h.SLE_NO
GROUP BY h.SLE_NO, h.SLE_DT, h.SHP_NO
ORDER BY h.SLE_NO DESC)
WHERE ROWNUM <= 20
--------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Used-Mem |
--------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 20 |00:00:02.41 | 12787 | |
|* 1 | COUNT STOPKEY | | 1 | | 20 |00:00:02.41 | 12787 | |
| 2 | VIEW | | 1 | 500K| 20 |00:00:02.41 | 12787 | |
|* 3 | SORT ORDER BY STOPKEY | | 1 | 500K| 20 |00:00:02.41 | 12787 | 4096 (0) |
| 4 | HASH GROUP BY | | 1 | 500K| 500K|00:00:02.17 | 12787 | 47M (0)|
|* 5 | HASH JOIN | | 1 | 1096K| 1096K|00:00:01.18 | 12787 | 34M (0)|
| 6 | TABLE ACCESS FULL | CF10 | 1 | 500K| 500K|00:00:00.06 | 4583 | |
| 7 | TABLE ACCESS FULL | CF11 | 1 | 1096K| 1096K|00:00:00.12 | 8204 | |
--------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(ROWNUM<=20)
3 - filter(ROWNUM<=20)
5 - access("D"."SLE_NO"="H"."SLE_NO")