인덱스(Index)
인덱스(영어: index)는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다.
일반적으로 BTree 인덱스 구조를 사용한다
전체 테이블 스캔과 인덱스 스캔
1. 전체 테이블 스캔(Full Table Scan)
: 전체 테이블 스캔 방식으로 데이터를 검색한다는 것은 테이블에 존재하는 모든 데이터를 읽어 가면서 조건에 맞으면 결과로서 추출하고 조건에 맞지 않으면 버리는 방식으로 검색한다.
2. 인덱스 스캔
: 인덱스 스캔은 인덱스를 구성하는 칼럼의 값을 기반으로 데이터를 추출하는 액세스 기법이다.
인덱스 스캔 방식
1. Index Range Scan
: 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위(Range)만 스캔하는 방식
2. Index Full Scan
: 수직적 탐색없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식으로서, 대개는 데이터 검색을 위한 최적의 인덱스가 없을 때 차선으로 선택된다.
3. Index Unique Scan
: 수직적 탐색만으로 데이터를 찾는 스캔 방식으로서, Unique 인덱스를 '=' 조건으로 탐색하는 경우에 작동한다.
4. Index Skip Scan
: 인덱스 전부 스캔하지 않고 SKIP해서 스캔하는 액세스 기법
5. Index Fast Full Scan
: Index Full Scan보다 빠르다
: 결과집합 순서 보장 안됨
: 병렬스캔 가능
6. Index Range Scan Descending
: Index Range Scan과 기본적으로 동일한 스캔방식인데, 뒤에서부터 앞으로 스캔하기 때문에 내림차순으로 정렬된 결과 집합을 얻는다는 점이 다르다.
참고
사이트 : 위키백과 인덱스
사이트 : 데이터 온에어 인덱스 기본원리
도서 : SQL 전문가 가이드
'프로그래밍 > DB' 카테고리의 다른 글
관계 (0) | 2021.09.15 |
---|---|
DDL과 DML, DCL, TCL (0) | 2021.09.14 |
정규화(Normalization)와 반정규화(De-Normalization) (0) | 2021.09.09 |
트랜잭션 이해 2 - 격리, 단계, 수준 (0) | 2021.09.07 |
트랜잭션 이해 (0) | 2021.09.05 |