테마
유통 매장 POS의 「영수증 재조회」 화면이다. 환불이나 교환 손님이 오면 직원이 영수증 맨 아래 판매번호의 뒤 네 자리(그날의 일련번호)를 친다. 매장 다섯 곳에서 하루 수백 번 쓴다.
직원들은 이렇게 말한다. "칠 때마다 굼뜨고, 목록이 2천 줄쯤 나와서 손님 영수증을 눈으로 찾는다." 아래는 손님 영수증 20230601-0308을 찾으려고 0308을 쳤을 때다.
CF10 판매: 500,000행 · 4,583블록 · 2022-01-01 ~ 2023-12-31 · 하루 596 ~ 793건SLE_NO VARCHAR2(15): 판매일자 8자리 + - + 그날의 일련번호 4자리 ('20230601-0308'). 영수증에는 판매번호와 판매일자가 함께 찍힌다CF10_PK (SLE_NO): BLEVEL 2 · 리프 약 1,680블록 · 통계 최신 · 다른 인덱스 없음SELECT SLE_NO, SLE_DT, SLE_HMS, SHP_NO
FROM CF10
WHERE SLE_NO LIKE '%' || :v_no || '%'
-------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 2053 |00:00:00.05 | 4587 |
|* 1 | TABLE ACCESS FULL| CF10 | 1 | 25000 | 2053 |00:00:00.05 | 4587 |
-------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("SLE_NO" LIKE '%'||:V_NO||'%')
CF10_PK가 바로 SLE_NO 인덱스인데도 TABLE ACCESS FULL로 처리되는 이유를 실행계획의 어느 줄에서 알 수 있는지 설명하시오. 결과가 1건이 아니라 2,053건인 이유도 설명하시오.