데이터베이스

오라클(Oracle) Index Scan 종류

오라클(Oracle)에서 Index Scan은 인덱스를 활용하여 데이터를 조회하는 방식이며, 다양한 방식으로 수행될 수 있습니다. 주요 Index Scan의 종류는 다음과 같습니다.

1. Index Unique Scan

  • 특징: 인덱스의 고유한 값(UNIQUE, PRIMARY KEY)을 기준으로 한 건 또는 극소수의 데이터를 검색할 때 사용됨.
  • 사용 조건:
    • 인덱스의 유니크 키(PK, UNIQUE INDEX)로 검색할 때
    • WHERE 절에서 완전한 키 값을 검색하는 경우
  • 예제: SELECT * FROM EMP WHERE EMP_ID = 1001;
  • 실행 계획 예시: INDEX UNIQUE SCAN (INDEX_NAME)

2. Index Range Scan

  • 특징:
    • 인덱스의 특정 범위(조건)를 검색할 때 사용됨.
    • 일반적으로 BETWEEN, LIKE 'ABC%', <, >, IN 조건이 포함된 경우 발생.
    • 많은 결과를 반환할 가능성이 있어 효율적인 실행 계획이 필요함.
  • 예제: SELECT * FROM EMP WHERE EMP_ID BETWEEN 1000 AND 2000; SELECT * FROM EMP WHERE NAME LIKE 'A%';
  • 실행 계획 예시: INDEX RANGE SCAN (INDEX_NAME)

3. Index Full Scan

  • 특징:
    • 인덱스의 전체 데이터를 순차적으로 조회하는 방식.
    • ORDER BY 절이 인덱스 정렬과 동일하면 테이블 액세스 없이 조회 가능.
    • 테이블 조회가 거의 없기 때문에, 특정 상황에서는 FULL TABLE SCAN보다 효율적일 수 있음.
  • 사용 조건:
    • WHERE 절 없이 ORDER BY가 인덱스 순서와 일치하는 경우.
    • 필터링 없이 전체 인덱스를 읽어야 하는 경우.
  • 예제: SELECT EMP_ID FROM EMP ORDER BY EMP_ID;
  • 실행 계획 예시: INDEX FULL SCAN (INDEX_NAME)

4. Index Fast Full Scan

  • 특징:
    • 인덱스 전체를 읽되 멀티 블록 읽기를 사용하여 성능을 향상시킴.
    • INDEX FULL SCAN과 다르게 인덱스 데이터를 병렬로 읽을 수 있음.
    • TABLE ACCESS가 불필요한 경우 매우 빠름.
  • 사용 조건:
    • SELECT 절에서 인덱스에 포함된 컬럼만 사용하는 경우 (INDEX ONLY SCAN 최적화).
    • WHERE 절 없이 모든 인덱스 데이터를 읽어야 하는 경우.
  • 예제: SELECT EMP_ID FROM EMP;
  • 실행 계획 예시: INDEX FAST FULL SCAN (INDEX_NAME)

5. Index Skip Scan

  • 특징:
    • 선행 컬럼이 없는 WHERE 조건을 사용할 때 인덱스를 활용할 수 있도록 함.
    • 복합 인덱스(Multi-Column Index)가 있는 경우, 선행 컬럼을 건너뛰고 인덱스를 스캔하는 방식.
  • 사용 조건:
    • 선행 컬럼 없이 후행 컬럼만 조회하는 경우.
    • 인덱스의 선행 컬럼 값이 적고 후행 컬럼 값이 다양한 경우 효과적.
  • 예제: -- 복합 인덱스 (DEPT_ID, EMP_NAME) 존재 SELECT * FROM EMP WHERE EMP_NAME = 'John';
  • 실행 계획 예시 INDEX SKIP SCAN (INDEX_NAME)

6. Index Join Scan

  • 특징:
    • 두 개 이상의 인덱스를 조합하여 테이블 조회를 최소화하는 방식.
    • 여러 개의 단일 컬럼 인덱스를 조합하여 AND 조건을 만족하는 데이터를 찾음.
  • 사용 조건:
    • 여러 개의 단일 컬럼 인덱스가 존재하는 경우.
    • WHERE 조건이 인덱스 컬럼들을 동시에 포함할 때.
  • 예제: SELECT * FROM EMP WHERE EMP_ID = 1001 AND DEPT_ID = 10;
  • 실행 계획 예시: INDEX JOIN SCAN

7. Index Range Scan Descending

  • 특징:
    • 인덱스를 역순(Descending)으로 스캔하는 방식.
    • ORDER BY column DESC 조건에서 발생.
  • 예제: SELECT * FROM EMP ORDER BY EMP_ID DESC;
  • 실행 계획 예시: INDEX RANGE SCAN DESCENDING (INDEX_NAME)

📌 정리

Index Scan 유형특징사용 조건
Index Unique Scan고유(UNIQUE) 값 조회WHERE PK = ?
Index Range Scan특정 범위 조회BETWEEN, <, LIKE
Index Full Scan인덱스 전체 스캔ORDER BY 정렬 시
Index Fast Full Scan병렬 인덱스 전체 스캔인덱스 컬럼만 조회
Index Skip Scan선행 컬럼 없이 후행 컬럼 조회복합 인덱스 후행 컬럼 사용
Index Join Scan여러 인덱스를 조합하여 조회다중 인덱스 활용
Index Range Scan Descending인덱스 역순 검색ORDER BY DESC

각 Index Scan은 쿼리 조건과 인덱스 구조에 따라 다르게 동작하므로, EXPLAIN PLAN 또는 AUTOTRACE를 통해 실행 계획을 확인하는 것이 중요합니다. 🚀

힌트 정리

Index Scan 유형사용되는 힌트(Query Hint)설명
Index Unique ScanINDEX(TABLE_NAME INDEX_NAME)유일한(PK, UNIQUE) 값을 조회할 때 사용.
Index Range ScanINDEX(TABLE_NAME INDEX_NAME)범위 검색 (BETWEEN, <, >, LIKE 'A%') 수행.
Index Full ScanINDEX_FFS(TABLE_NAME INDEX_NAME)인덱스를 전체 검색, 테이블 조회 최소화.
Index Fast Full ScanINDEX_FFS(TABLE_NAME INDEX_NAME)멀티 블록 읽기를 활용하여 인덱스 전체를 빠르게 스캔.
Index Skip ScanINDEX_SS(TABLE_NAME INDEX_NAME)복합 인덱스의 선행 컬럼 없이 후행 컬럼만 검색 가능.
Index Join ScanINDEX_JOIN(TABLE_NAME INDEX1 INDEX2)두 개 이상의 단일 컬럼 인덱스를 조합하여 테이블 조회를 줄임.
Index Range Scan DescendingINDEX_DESC(TABLE_NAME INDEX_NAME)인덱스를 역순(Descending)으로 읽음.

📌 추가 참고 사항

  • INDEX_FFS와 INDEX_SS는 성능 최적화에 중요한 역할을 하므로, 특정 상황에서 활용 가능성을 고려해야 합니다.
  • INDEX_JOIN은 복합 인덱스를 생성하지 않고도 다중 인덱스를 활용하는 방법입니다.

zerg96

Recent Posts

정보보안기사 필기 핵심 개념, 접근통제·인증 8문제로 정리

필기 시험의 접근통제 영역은 용어 하나만 알아도 풀리는 문제와 개념을 뒤집어 묻는 문제가 섞여 나옵니다.…

44분 ago

유튜브 AI 영상 범람, 진짜 크리에이터는 어떻게 살아남나

유튜브에 AI 자동 생성 영상이 넘쳐납니다. 진짜 크리에이터들은 어떻게 살아남아야 할까요? AI와 경쟁하는 3가지 생존…

2시간 ago

코스피 사이드카 이틀 만에 또 발동, 올해만 27번째…5분간 멈추는 건 ‘프로그램 매도’뿐입니다

이틀 전에 사이드카가 걸렸을 때만 해도 "한 번 놀란 장"으로 끝날 줄 알았는데요. 15일 아침…

2시간 ago

코스피 낙폭 7%로 확대, 외국인 1.7조 순매도: 10월 15일 오전 10시 시황

오전 시황 글에 이어 장중 후속 정리입니다. 코스피는 개장 직후 5%대였던 낙폭이 오전 10시 전후에…

6시간 ago

코스피 5.59% 급락 출발, 개장 7분 만에 매도 사이드카: 10월 15일 오전 시황

10월 15일 목요일 아침, 코스피가 전날 종가보다 5.59% 낮은 5,673.01로 출발했습니다. 장 시작 7분 만에…

6시간 ago

삼성 갤럭시 AI, 솔직히 기대 이하였다 — 실망스러운 이유 TOP 5

삼성 갤럭시 AI, 써보니 실망스러웠다. 온디바이스 한계, 지역 제한, 낮은 일상 활용도 등 현실적인 문제점…

7시간 ago