테마
유통 본사 DW팀이 판매(CF10, CF11)를 매일 밤 집계해 「일별 상품 판매」 테이블을 만들었다. 기획팀의 「매장별 월 매출」 화면은 이 테이블에서 한 달을 골라 합계를 낸다.
개발자는 판매 테이블에서 쓰던 방식(SLE_DT LIKE '202306%', 교재 03화에서 인덱스 범위 스캔이 되던 모양)을 그대로 가져왔다. 그런데 이 화면은 인덱스가 있는데도 테이블 전체를 읽는다.
DW_SLE_DD 일별 상품 판매(이 문제에서 쓰는 파생 테이블, 판매와 판매상품을 매장 · 일 · 상품별로 집계): 292,000행 · 1,460블록 · 날짜순 적재SLE_YMD NUMBER(8) (20220101 ~ 20231231) · SHP_NO 5곳 · ITM_NO · SLE_QTY · SLE_AMT · 한 달 약 12,000행IX_DW_SLE_DD_YMD (SLE_YMD): BLEVEL 1 · 리프 650블록 · 통계 최신SELECT SHP_NO, SUM(SLE_QTY) AS qty, SUM(SLE_AMT) AS amt
FROM DW_SLE_DD
WHERE SLE_YMD LIKE :v_ym || '%'
GROUP BY SHP_NO
ORDER BY amt DESC
[2023년 6월 · :v_ym = '202306']
------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 5 |00:00:00.04 | 1464 |
| 1 | SORT ORDER BY | | 1 | 5 | 5 |00:00:00.04 | 1464 |
| 2 | HASH GROUP BY | | 1 | 5 | 5 |00:00:00.04 | 1464 |
|* 3 | TABLE ACCESS FULL| DW_SLE_DD | 1 | 14600 | 12000 |00:00:00.03 | 1464 |
------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter(TO_CHAR("SLE_YMD") LIKE :V_YM||'%')
LIKE '202306%'가 이 테이블에서는 왜 TABLE ACCESS FULL이 되는지 3번 줄로 설명하시오.