select *

from 쿠폰

where 발행일시  >= '2024-07-01 00:00:00'

and 쿠폰분류코드 = 'C01'

order by 발행일시

limit 20;


옵티마이저는 인덱스 스캔 실행계획을 세웠다고 가정


통계 

[쿠폰] 발생일시 조건을 만족하는 레코드가 1만건

쿠폰분류코드 unique(C01, C02)


인덱스 구성

쿠폰_X01(발행일시, 쿠폰분류코드)


발행일시 조건을 만족하는 레코드 1만건중

쿠폰분류코드 = 'C01'을 만족하는 레코드가 10건

쿠폰분류코드 = 'C02'을 만족하는 레코드가 9990건


C01, C02 데이터 분포

'2024-07-01 00:00:00' 조건을 만족하는 첫 10개의 

데이터가 모두 'C01'이고 이후 9990건이 'C02'임


(2024-07-01 00:00:00, C01) -> 10개 반복

(2024-07-01 00:00:00, C01)

(2024-07-01 00:00:00, C01)

(2024-07-01 00:00:00, C01)

...

(2024-07-01 00:00:01, C02) -> 9990개 반복

..



문제

이때 인덱스 페이지에서 몇 건의 레코드를 읽고 멈출까요??


(꼬리문제)

테이블 액세스는 몇 번 발생할까요?