추측 멈추고 엔진한테 물어봐
아무 query 앞에 EXPLAIN QUERY PLAN 붙이면 SQLite 가 실제로 뭐 할지 알려줘. Operation 트리 출력; 봐야 할 단어:
- SCAN — full scan. 작은 테이블엔 싸고 큰 테이블엔 비쌈.
- SEARCH — 인덱스 lookup (좋음).
- USING INDEX X — 어떤 인덱스 골랐나.
- USING COVERING INDEX X — query 가 필요한 모든 컬럼이 인덱스 안 — 실제 테이블 안 만짐 (excellent).
- USE TEMP B-TREE FOR ORDER BY — SQLite 가 정렬에 인덱스 못 씀, 임시로 만듦. 정렬 인덱스 빠진 신호.
Tip: EXPLAIN QUERY PLAN 이 muscle memory 여야 함. 최적화 전 explain. 후 다시 explain — plan 바뀌었는지 확인. Plan 안 바뀐 'fix' 는 fix 안 한 거.