물론 DB 옵티마이저가 선택하긴하는데, 알아두는게 좋으니까!
테이블 풀스캔이 더 효율적인 경우:
- 검색 결과가 많은 경우
- 테이블 데이터의 20~30% 이상을 가져와야 한다면, 인덱스를 사용하는 것보다 풀스캔이 더 빠를 수 있습니다.
- 인덱스 → 테이블 조회의 랜덤 I/O 비용이 순차적 I/O보다 많아질 수 있기 때문입니다.
- 작은 테이블의 경우
- 몇 백~몇 천 건 정도의 작은 테이블은 전체를 메모리에 올려 스캔하는 것이 더 빠를 수 있습니다.
- 인덱스 관리 오버헤드가 더 클 수 있습니다.
- 데이터 분포가 고르지 않은 경우
- 특정 값이 테이블의 대부분을 차지한다면(낮은 카디널리티), 인덱스의 선택성이 떨어집니다.
- 예: '성별=남' 조건으로 남성이 90%인 테이블을 검색할 때
- 열 집약적 분석 쿼리의 경우
- 집계 함수(SUM, AVG, COUNT 등)가 많은 경우
- GROUP BY, ORDER BY가 필요한 복잡한 통계 쿼리
- 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 |