오라클(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은 복합 인덱스를 생성하지 않고도 다중 인덱스를 활용하는 방법입니다.코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…
SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…
SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…
달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…
미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.
스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…