오라클(Oracle)에서 Index Scan은 인덱스를 활용하여 데이터를 조회하는 방식이며, 다양한 방식으로 수행될 수 있습니다. 주요 Index Scan의 종류는 다음과 같습니다.
WHERE 절에서 완전한 키 값을 검색하는 경우SELECT * FROM EMP WHERE EMP_ID = 1001;INDEX UNIQUE SCAN (INDEX_NAME)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)FULL TABLE SCAN보다 효율적일 수 있음.WHERE 절 없이 ORDER BY가 인덱스 순서와 일치하는 경우.SELECT EMP_ID FROM EMP ORDER BY EMP_ID;INDEX FULL SCAN (INDEX_NAME)INDEX FULL SCAN과 다르게 인덱스 데이터를 병렬로 읽을 수 있음.SELECT 절에서 인덱스에 포함된 컬럼만 사용하는 경우 (INDEX ONLY SCAN 최적화).WHERE 절 없이 모든 인덱스 데이터를 읽어야 하는 경우.SELECT EMP_ID FROM EMP;INDEX FAST FULL SCAN (INDEX_NAME)-- 복합 인덱스 (DEPT_ID, EMP_NAME) 존재 SELECT * FROM EMP WHERE EMP_NAME = 'John';INDEX SKIP SCAN (INDEX_NAME)AND 조건을 만족하는 데이터를 찾음.WHERE 조건이 인덱스 컬럼들을 동시에 포함할 때.SELECT * FROM EMP WHERE EMP_ID = 1001 AND DEPT_ID = 10;INDEX JOIN SCANORDER 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 Scan | INDEX(TABLE_NAME INDEX_NAME) | 유일한(PK, UNIQUE) 값을 조회할 때 사용. |
| Index Range Scan | INDEX(TABLE_NAME INDEX_NAME) | 범위 검색 (BETWEEN, <, >, LIKE 'A%') 수행. |
| Index Full Scan | INDEX_FFS(TABLE_NAME INDEX_NAME) | 인덱스를 전체 검색, 테이블 조회 최소화. |
| Index Fast Full Scan | INDEX_FFS(TABLE_NAME INDEX_NAME) | 멀티 블록 읽기를 활용하여 인덱스 전체를 빠르게 스캔. |
| Index Skip Scan | INDEX_SS(TABLE_NAME INDEX_NAME) | 복합 인덱스의 선행 컬럼 없이 후행 컬럼만 검색 가능. |
| Index Join Scan | INDEX_JOIN(TABLE_NAME INDEX1 INDEX2) | 두 개 이상의 단일 컬럼 인덱스를 조합하여 테이블 조회를 줄임. |
| Index Range Scan Descending | INDEX_DESC(TABLE_NAME INDEX_NAME) | 인덱스를 역순(Descending)으로 읽음. |
📌 추가 참고 사항
INDEX_FFS와 INDEX_SS는 성능 최적화에 중요한 역할을 하므로, 특정 상황에서 활용 가능성을 고려해야 합니다.INDEX_JOIN은 복합 인덱스를 생성하지 않고도 다중 인덱스를 활용하는 방법입니다.1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…