책의 색인 — 같은 아이디어
인덱스는 DB 의 책 뒤 색인. 600 페이지 책의 색인에서 'transactions' 찾기는 한 눈; 그 단어 찾으려 모든 페이지 읽기는 몇 시간. PostgreSQL 인덱스도 똑같음: 테이블 행 가리키는 별도 정렬 구조 — O(N) 스캔을 O(log N) lookup 으로.
Trade-off
인덱스 공짜 아님. 모든 INSERT, UPDATE, DELETE 가 테이블 모든 인덱스 갱신. 인덱스도 디스크 공간 — 가끔 테이블 자체보다 큼. 적정 인덱스 수 = 실제 중요한 쿼리 지원하는 최소 집합. '혹시 모르니' 인덱스 추가가 정확히 스키마 부패하는 방법.
자동 인덱스되는 거
PostgreSQL 이 자동 인덱스 생성: PRIMARY KEY, UNIQUE 제약. FK 는 자동 인덱스 안 됨 — 가장 흔한 성능 함정 중 하나. FK 항상 인덱스.