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개 반복
..
문제
이때 인덱스 페이지에서 몇 건의 레코드를 읽고 멈출까요??
(꼬리문제)
테이블 액세스는 몇 번 발생할까요?
20 20
내 윗 댓글들 다 어디갔노
10건밖에 안되는데 C01 조건만족하는게 그러면 테이블은 10번만 올라가지않나?
1번은 어디까지 읽다가 끝나는진 모르겠노
아 문제를 잘못봤음ㅋㅋ 같은 일시당 10 9990 있는걸로 봤네
그럼 11 10이 맞겠제
11 10