프로그래밍/DB

인덱스(Index)

Baesj 2021. 9. 14. 15:38

인덱스(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