인덱스는 공짜 아냐
모든 인덱스가 write 느리게 (모든 INSERT/UPDATE/DELETE 가 인덱스 업데이트) 만들고 디스크 차지. 비용보다 더 갚는 인덱스 정확히 만드는 게 기술.
인덱스 시기:
- 큰 테이블의 자주
WHERE,JOIN,ORDER BY컬럼. - 높은 selectivity 컬럼 (distinct 값 많은).
- FK — 거의 항상 인덱스.
인덱스 안 할 때:
- 테이블이 작음 (수천 미만). Full scan 이 인덱스 lookup overhead 보다 빠름.
- 낮은 selectivity (예: boolean). Partial 인덱스 써.
- 필터링/join 거의 안 함.
- Write-heavy + 인덱스가 hot query 에 안 쓰임.
Warning: 인덱스는 active maintenance 부담. 기존 인덱스 리뷰 (안 쓰는 거, 중복, 2 년 전 버그 fix 로 추가된 거) 가 정상 DB hygiene.
SELECT name FROM sqlite_schema WHERE type='index' AND tbl_name='X' 가 audit 시작점.