테마
본사 MD의 「행사 상품 고르기」 팝업은 카테고리를 고르면 그 카테고리 상품 가운데 한 번이라도 팔린 상품만 보여 준다. MD 열 명이 행사를 짤 때마다 카테고리를 바꿔 가며 눌러 하루 2천 번쯤 호출되고, 한 번에 0.05초 남짓 걸린다. DBA는 "0.05초짜리를 왜 보느냐"라고 하지만, 하루 합계로는 이 팝업이 판매상품 인덱스를 가장 많이 읽는다.
CF01 상품: 109행 · 5블록 · CF01_PK (ITM_NO) · 카테고리 311(텀블러)에 상품 9개, 그중 판매 이력이 있는 상품 7개CF11 판매상품: 1,096,708행 · 8,204블록 · CF11_PK (SLE_NO, ITM_NO) 리프 약 4,300블록 · ITM_NO로 시작하는 인덱스는 없다SELECT p.ITM_NO, p.ITM_NM
FROM CF01 p
WHERE p.CTG_NO = :ctg
AND EXISTS (SELECT 1
FROM CF11 b
WHERE b.ITM_NO = p.ITM_NO)
ORDER BY p.ITM_NO
--------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
--------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 7 |00:00:00.05 | 4338 |
| 1 | SORT ORDER BY | | 1 | 8 | 7 |00:00:00.05 | 4338 |
|* 2 | HASH JOIN SEMI | | 1 | 8 | 7 |00:00:00.05 | 4338 |
|* 3 | TABLE ACCESS FULL | CF01 | 1 | 8 | 9 |00:00:00.01 | 5 |
| 4 | INDEX FAST FULL SCAN| CF11_PK | 1 | 1096K| 1096K|00:00:00.04 | 4333 |
--------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("B"."ITM_NO"="P"."ITM_NO")
3 - filter("P"."CTG_NO"=:CTG)