오라클(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 SCAN
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 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
은 복합 인덱스를 생성하지 않고도 다중 인덱스를 활용하는 방법입니다.윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…