인덱스 — 책 뒤에 붙은 '찾아보기'
10만 줄을 0.001초에 찾는 비결
인덱스가 없으면 첫 장부터 끝까지, 있으면 단번에.
두꺼운 백과사전에서 '광합성'을 찾아야 합니다. 두 가지 방법이 있죠.
🐌 1쪽부터 넘기기
1쪽, 2쪽, 3쪽… 나올 때까지 전부 확인.
이걸 데이터베이스에서는 풀 스캔(full scan)이라고 합니다.
🚀 뒤쪽 '찾아보기' 펴기
ㄱ...ㄷ...ㄱ광합성 → 482쪽. 바로 482쪽으로 점프.
이 '찾아보기'가 바로 인덱스(index)입니다.
인덱스는 미리 정렬해 둔 지도입니다.
"어떤 값이 몇 번째 줄에 있는지"를 따로 적어 둔 작은 표예요.
데이터베이스는 이 지도를 먼저 보고, 목적지로 곧장 날아갑니다.
🔬 직접 측정해 봅시다
말로만 들으면 와닿지 않죠. 아래 실험실에서 진짜 SQLite 데이터베이스에 5만 줄을 넣고
인덱스가 있을 때와 없을 때의 검색 속도를 직접 재 보세요.
모든 계산은 여러분의 브라우저 안에서 실제로 실행됩니다.
🤔 확인 문제
100만 줄짜리 테이블에서 WHERE 이메일 = '...' 검색이 너무 느립니다. 가장 알맞은 처방은?
해설 검색 조건에 쓰이는 그 열에 인덱스를 만드는 것이 정답입니다. 모든 열에 걸면 저장 공간과 쓰기 속도를 크게 손해 봅니다.