오라클 COUNT(*) 빠르게 하기 — 인덱스 패스트 풀 스캔 활용법

개발을 하다 보면 특정 테이블에서 원하는 데이터가 존재하는지 빠르게 확인하고 싶을 때가 있습니다.
이때 흔히 사용하는 것이 바로 COUNT()인데, 이 방법도 성능 최적화를 통해 훨씬 더 빠르게 사용할 수 있습니다.
오늘은 오라클에서 COUNT()를 빠르게 수행하는 방법 중 하나인 인덱스 패스트 풀 스캔(Index Fast Full Scan)에 대해 알아보겠습니다.
1. COUNT(*) 수행 방식
COUNT(*)를 수행할 때 오라클은 두 가지 방식으로 데이터를 스캔할 수 있습니다.
- 테이블 전체를 FULL SCAN
- INDEX 영역을 FULL SCAN
어떤 방식이 빠를지는 테이블의 구조와 데이터 분포에 따라 다릅니다.
일반적으로 INDEX 영역을 스캔하는 것이 빠를 때가 많지만, 단일 블록 스캔(Single Block Scan) 방식으로 인해 기대만큼의 속도가 나지 않을 수 있습니다.
그렇다면 INDEX 영역을 다중 블록 스캔(Multi Block Scan)하면 어떨까요?
훨씬 빠른 성능을 기대할 수 있습니다.
2. INDEX FAST FULL SCAN이란?
INDEX FAST FULL SCAN은 INDEX 영역을 여러 블록으로 나누어 병렬로 읽어들이는 방식입니다.
이 방법을 사용하면 테이블의 데이터를 직접 읽지 않고도 INDEX만으로 COUNT(*)를 빠르게 수행할 수 있습니다.
이를 위해 오라클의 힌트(Hint) 중 INDEX_FFS를 사용합니다.
3. 실행 계획 비교
기본 COUNT(*) 실행
INDEX FULL SCAN 사용
INDEX FAST FULL SCAN 사용
4. 성능 테스트 결과
테스트 데이터를 5만 건으로 설정하고 실행한 결과는 다음과 같습니다.
INDEX FAST FULL SCAN을 사용한 경우 성능이 10배 이상 향상되는 것을 확인할 수 있습니다.
5. 결론
오라클에서 COUNT()를 빠르게 수행하고 싶다면 INDEX FAST FULL SCAN을 적극적으로 활용해 보세요. 특히 데이터가 많고 COUNT()가 자주 필요한 경우, 성능 최적화에 큰 도움이 될 것입니다.
힌트 사용법도 간단하니 지금 바로 테스트해 보세요!