테마
유통 본사 정보보안팀의 「판매번호 이상 점검」은 판매번호가 판매일자로 시작하지 않는 판매를 찾는다. 관제 모니터에서 10분마다 돈다. 지난주에는 매장 POS 한 대의 시계가 초기화되어 '1970년' 판매가 찍혔고, 개점 리허설을 하던 교육용 단말의 판매도 섞여 들어왔다.
조민우는 부정형을 없애려고 조건을 SLE_NO > '21'로 바꿔 보았다. 빨라졌지만 지난주의 1970년 판매 23건이 결과에서 사라졌다.
CF10 판매: 500,000행 · 4,583블록(전체 스캔 4,510) · SLE_NO VARCHAR2(15) NOT NULL · 정상 판매번호는 '20230601-0001'처럼 판매일자 8자리로 시작한다'19700101-0001' ~ '19700101-0023' 23건, 교육용 단말의 'TR01-0001' ~ 'TR01-0014' 14건
(문제 설정: 교재의 CF10에는 이런 행이 없다)CF10_PK (SLE_NO): BLEVEL 2 · 리프 약 1,680 · 통계 최신 · 세션의 문자 비교는 BINARY(NLS_COMP, NLS_SORT 기본값)SELECT SHP_NO, SLE_NO, SLE_DT, SLE_HMS, SLE_DOW
FROM CF10
WHERE SLE_NO NOT LIKE '20%'
ORDER BY SHP_NO, SLE_NO
-------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 37 |00:00:00.05 | 4510 |
| 1 | SORT ORDER BY | | 1 | 5000 | 37 |00:00:00.05 | 4510 |
|* 2 | TABLE ACCESS FULL| CF10 | 1 | 5000 | 37 |00:00:00.05 | 4510 |
-------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("SLE_NO" NOT LIKE '20%')
NOT LIKE가 인덱스 범위를 정하지 못하는 이유를 설명하고, 조민우의 SLE_NO > '21'이 23건을 놓친 이유를 문자 정렬 순서로 설명하시오.CF10_PK의 범위만 읽도록 하시오. 고친 조건이 원래 조건과 같은 행을 고른다는 근거도 설명하시오.