본문 바로가기
CS(Computer Science)/데이터베이스

[ORACLE] 데이터 많을 때 count(*) 빠르게하기

by whdgus928 2023. 11. 6.

데이터가 많을때 count를 빠르게 하는 방법을 알아보겠습니다.

 

처음 돌리는 쿼리가 아니면 캐시에서 읽어와 빠르게 조회되는 경우가 있으니 주의하세요.

 

1. 기본 count

SELECT count(*) from table A;

 

 

2. 오라클 기본 컬럼인 rowid를 count

SELECT COUNT(ROWID)
FROM table

기본 count보다 빠른 성능을 보여줍니다.

 

3. 다음은 힌트를 사용해서 병렬로 처리하는 방식입니다.

SELECT /*+ full(A) parallel(A 8) */count(*) from table;

full(A): "full" 힌트는 전체 테이블 스캔을 수행하도록 옵티마이저에게 알려준다. 테이블 전체를 스캔하는 방식으로 데이터를 검색
parallel(A 8): "parallel" 힌트는 병렬 처리를 사용하도록 옵티마이저에게 알려준다. "A 8" 부분은 병렬 처리의 정도를 나타내며, 8개의 병렬 스레드를 사용하도록 지정

select /*+ index_ffs(a 인덱스명) parallel_index(a 인덱스명) parallel(a 4) */ count(인덱스컬럼명)
from 테이블명 a;

index_ffs(a 인덱스명): "index_ffs" 힌트는 특정 인덱스를 사용하여 데이터를 검색하도록 옵티마이저에게 알려줍니다. "a 인덱스명" 부분은 사용할 인덱스의 이름을 지정

 

 

기존의 방식들보다 힌트를 사용하면 많이 절약됩니다. 아래방법으로 갈수록 빨라짐을 확인할 수 있을겁니다.

반응형

댓글