반응형
SCAN 방식의 기본 개념
1️⃣ FULL TABLE SCAN
테이블 전체를 처음부터 끝까지 읽는 방식입니다.
다음과 같은 경우에 선택됩니다.
- WHERE 절 컬럼에 인덱스가 없는 경우
- 조건을 만족하는 데이터 비율이 매우 높은 경우
- 테이블 자체의 데이터 건수가 적은 경우
데이터가 적은 테이블에서는
인덱스를 거치는 것보다 FULL TABLE SCAN이 오히려 빠를 수 있습니다.
2️⃣ ROWID SCAN
ROWID를 이용해 단일 행에 직접 접근하는 방식입니다.
가장 빠른 접근 방법으로, 보통 다음과 같은 경우에 발생합니다.
- ROWID를 조건절에서 직접 사용한 경우
- 인덱스 스캔 후 실제 테이블 데이터를 읽을 때
3️⃣ INDEX SCAN 종류
INDEX SCAN은 상황에 따라 여러 방식으로 나뉩니다.
- INDEX UNIQUE SCAN
UNIQUE 인덱스의 모든 컬럼을 = 조건으로 조회하는 경우 - INDEX RANGE SCAN
PK 일부 사용 또는 일반적인 WHERE 조건 조회 - INDEX RANGE SCAN DESCENDING
RANGE SCAN과 동시에 ORDER BY DESC를 만족하는 경우 - INDEX SKIP SCAN
결합 인덱스의 선행 컬럼 없이도 옵티마이저 판단으로 사용하는 경우 - INDEX FULL SCAN
ORDER BY / GROUP BY를 인덱스로 처리하는 경우 - INDEX FAST FULL SCAN
테이블을 보지 않고 인덱스만으로 처리하며, 정렬이 필요 없는 경우 - INDEX JOIN
필요한 컬럼이 여러 인덱스에 분산되어 있을 때 인덱스끼리 조인하는 방식
결합 인덱스 정리
결합 인덱스는 두 개 이상의 컬럼을 묶어 만든 인덱스로,
컬럼의 순서가 성능에 매우 큰 영향을 미칩니다.
일반적인 우선순위는 다음과 같습니다.
- WHERE 절에서 가장 자주 사용되는 컬럼
- = 조건으로 사용되는 컬럼
- 데이터 분포도가 좋은 컬럼
- 사용 빈도가 높은 컬럼 순서
특히 선행 컬럼이 WHERE 절에서 사용되지 않으면
해당 인덱스는 거의 활용되지 않는 경우가 많습니다.
반응형
'IT > DB' 카테고리의 다른 글
| 기본키(PK) vs 외래키(FK) 차이 한 방에 끝내기 (0) | 2026.05.27 |
|---|---|
| DB, 테이블, 컬럼, 행 차이 완벽 요약 (0) | 2026.05.20 |
| PostgreSQL 기본 명령어 정리 (0) | 2026.02.17 |
| 옵티마이저(Optimizer) (1) | 2026.02.02 |