데이터가 많을때 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 인덱스명" 부분은 사용할 인덱스의 이름을 지정
기존의 방식들보다 힌트를 사용하면 많이 절약됩니다. 아래방법으로 갈수록 빨라짐을 확인할 수 있을겁니다.
반응형
'CS(Computer Science) > 데이터베이스' 카테고리의 다른 글
[ORACLE] LOCK 걸린 개체 확인 (1) | 2024.01.10 |
---|---|
[ORACLE] PL/SQL에서 쿼리 소요시간 확인하기 (0) | 2023.12.29 |
[SQL 튜닝] 실행계획 (1) | 2023.09.10 |
[ORACLE] SQL 튜닝 (1) | 2023.09.04 |
[ORACLE] 인덱스 타는 방법 (1) | 2023.09.04 |
댓글