풀 스캔(Full Scan)
2026년 8월 28일
풀 스캔(Full Scan)
- 풀 스캔은 DB가 문서를 처음부터 끝까지 하나씩 읽어 조건을 확인하는 것이다.
- MongoDB explain에서는
COLLSCAN, MySQL에서는type: ALL로 보인다.
비용
| 문서 수 | 풀 스캔 | B-tree 인덱스 |
|---|---|---|
| 1,000 | 1,000회 | 약 10회 |
| 10,000 | 10,000회 | 약 14회 |
| 1,000,000 | 1,000,000회 | 약 20회 |
데이터가 커질수록 격차가 벌어진다. 개발 DB에서 안 느껴지다가 운영에서 터지는 이유다.
풀 스캔이 나쁘지 않은 경우
- 문서가 몇십 건뿐일 때. 인덱스 탐색 오버헤드가 오히려 클 수 있다.
- 어차피 전체를 다 읽어야 할 때. 스냅샷 적재, 배치 집계.
- 조건이 전체의 절반 이상을 고를 때. 옵티마이저가 일부러 풀 스캔을 고르기도 한다.
벡터 쪽의 같은 개념
Qdrant에서 exact=True가 정확히 이 자리다. HNSW 그래프를 건너뛰고 모든 벡터와 코사인 유사도를 계산한다. 결과는 100% 정확하지만 O(N)이다. 벡터 세계의 ANN(근사 최근접 이웃)은 이 풀 스캔을 피하려고 존재한다.
한 줄 정리
풀 스캔은 전부 확인하기이고, 데이터가 커질수록 선형으로 느려진다. 인덱스도 ANN도 전부 이걸 피하려는 장치다.