TIL

table full scan이 더 좋을수도 있다.

하얀잔디 2025. 4. 8. 23:00

물론 DB 옵티마이저가 선택하긴하는데, 알아두는게 좋으니까!

 

테이블 풀스캔이 더 효율적인 경우:

  1. 검색 결과가 많은 경우
    • 테이블 데이터의 20~30% 이상을 가져와야 한다면, 인덱스를 사용하는 것보다 풀스캔이 더 빠를 수 있습니다.
    • 인덱스 → 테이블 조회의 랜덤 I/O 비용이 순차적 I/O보다 많아질 수 있기 때문입니다.
  2. 작은 테이블의 경우
    • 몇 백~몇 천 건 정도의 작은 테이블은 전체를 메모리에 올려 스캔하는 것이 더 빠를 수 있습니다.
    • 인덱스 관리 오버헤드가 더 클 수 있습니다.
  3. 데이터 분포가 고르지 않은 경우
    • 특정 값이 테이블의 대부분을 차지한다면(낮은 카디널리티), 인덱스의 선택성이 떨어집니다.
    • 예: '성별=남' 조건으로 남성이 90%인 테이블을 검색할 때
  4. 열 집약적 분석 쿼리의 경우
    • 집계 함수(SUM, AVG, COUNT 등)가 많은 경우
    • GROUP BY, ORDER BY가 필요한 복잡한 통계 쿼리
  5. MySQL의 인덱스 커버링이 불가능한 경우
    • 많은 컬럼을 조회하는 SELECT * 쿼리
    • 인덱스에 포함되지 않은 컬럼을 많이 조회해야 하는 경우

'TIL' 카테고리의 다른 글

AI_ 음성 분할에 대해서  (0) 2025.04.14
flutter 카카오 앱에서 로그인 이슈 삽질기  (0) 2025.04.11
index 설정 주의사항  (1) 2025.04.08
SSE란??  (0) 2025.03.25
트래픽 처리 부하테스트 일기  (0) 2025.03.20