인덱스

인덱스는 검색 키를 행 위치로 이어주는 찾아보기다

책의 색인이 단어를 페이지로 연결하듯, 데이터베이스 인덱스는 조건의 값을 정렬된 키에서 찾고 그 키가 가리키는 행 위치로 이동하게 한다.

조회 조건 찾고 싶은 값
WHERE email = 'k@site.com' 테이블 전체가 아니라 email 인덱스에서 먼저 후보를 찾는다.
정렬된 인덱스 엔트리 검색 키와 행 위치가 한 쌍이다
a@site.com 검색 키 PK 021
k@site.com 조건과 일치 PK 101
z@site.com 검색 키 PK 184
테이블 행 접근 locator가 실제 행을 가리킨다
id 021 a@site.com 사용자 행
id 101 email = k@site.com인 행
id 184 z@site.com 사용자 행

탐색은 세 단계로 줄어든다

01 키 비교 정렬된 인덱스에서 조건 값을 찾는다.
02 위치 확인 인덱스 엔트리의 locator를 읽는다.
03 행 읽기 필요한 테이블 행만 접근한다.

인덱스가 없으면 후보를 좁히기 어렵다

row 1 row 2 row 3 ... row N

인덱스는 답을 직접 저장하는 마법 상자가 아니라, 조건 값에서 행 위치까지 가는 길을 짧게 만들어 주는 보조 구조다.