카테고리 없음

gw1 2025. 10. 15. 20:08

Book 테이블에
category 칼럼
au.thor 칼럼(작가/ 식별성 높음 /동명이인 가능)가 있습니다.

Book 테이블은 500만개
카테고리는 총 20개로 가정합니다.

select * from book where category = ? and a.uthor = ?

인덱스
A (category)
B (a.uthor)
C (category, a.uthor)
D (a.uthor, category)

이 쿼리에 대한 인덱스 선택의 문제입니다.

1. 해당 쿼리 기준으로
C(category, a.uthor)와
D(a.uthor, category)의
인덱스 동작의 차이를 설명하세요.

정답 : 동등조건 exact match로 속도 차이 거의 없음
읽어야할 row수 동일

2. 해당 쿼리 기준
가장 느린 인덱스를 선택하세요.

정답 A 카디널리티 낮고 추가조건 작가=?으로 랜덤io 폭증

3. 해당 쿼리 기준
B (a.uthor)와 D (a.uthor, category) 인덱스 동작 차이를 설명하세요.

정답 : 동명이인이 있는 케이스에서
B는 카테고리 값 관계없이 항상 랜덤io
D는 인덱스 단에서 필터링되어 카테고리 일치만 랜덤 io

4.
select * from book  category = ? and a.uthor like '%단어%' 로 바뀐다면
가장 빠른 인덱스를 선택하세요.

정답 : (카테고리, 작가)
카테고리로 범위 좁히고 작가는 그 안에서 레인지 스캔

5. select * from book a.uthor like '%단어%' 로 바뀐다면
가장 빠른 인덱스를 선택하세요.

정답 : (작가)
인덱스 풀 스캔으로 작동(테이블 풀스캔보다 빠름)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

6. select * from book where a.uthor = ? 쿼리에서
C (category, au.thor) 인덱스 동작 방식을 설명하세요.

정답 : Index full scan(인덱스 리프노드를 처음부터 끝까지 읽고)
작가가 일치할 때만 랜덤 io