개발자 끄적끄적
Index의 종류와 특징 본문
<Index 종류와 특징>
1. Index Unique Scan
- 인덱스를 사용한 검색 방식 중 가장 빠른 방식
- 이 방식을 사용하기 위해서는 키본 키 또는 Unique Index가 생성되어 있어야 하며
인덱스를 구성하고 있는 모든 컬럼이 조건절에서 '='로 비교되어야 한다
- 조인되는 Inner Table 과의 조인 조건에도 Unique index 또는 기본 키 컬럼이 모두 조인에 참여했을 때만
Index Unique Scan을 할 수 있다
2. Index Range Scan
- 인덱스를 사용해 인덱스가 생성된 컬럼에 대해 범위를 검색하는 방법
- Unique Index를 사용하지 않거나, 비교연산자를 사용한 대다수의 경우가 이 방식으로 처리되며
비교 연산자로는 <, <=, >, >=, between, like 등이 사용된다
3. Index Skip Scan
- 결합 인덱스의 선행 컬럼에 대한 조건이 없고 후행 컬럼에 대한 조건이 있는 경우에만 적용된다
- 이 방식은 선행 컬럼 값의 중복을 제거한 값의 종류가 적은 경우 유리하다
4. Index Full Scan
- 조건절 인덱스 컬럼 중 하나 이상을 사용한 경우 또는 SQL에서 사용한 컬럼들이 모두 하나의 엔덱스에
존재할 경우 적용되는 방식이다
이 가운데 SQL에서 사용한 컬럼들이 모두 하나의 인덱스에 존재할 경우 인덱스를 구성하는 컬럼 중 최소한 하나의 컬럼은 Not Null 제약 조건을 충족해야 한다
- 이 방식을 병렬로 처리하는 것은 불가능하다(단일 블록 I/O 블록 단위 검색)
4. Index Fast Full Scan
- Select 절과 조건절에 사용된 모든 컬럼이 인덱스 컬럼으로 구성되어 있어 테이블을 검색하지 않고
인덱스의 블록만을 스캔하여 원하는 데이터를 검색하는 방식이다
- Index Full Scan과 달리 병렬처리가 가능하나 인덱스 키 데이터의 정렬은 보장하지 않는다
- 비트맵 인덱스에 대해서는 이 방식을 적용할 수 없다
<효과적인 인덱스 컬럼 선정>
1. 조건절에 자주 등장하는 컬럼
- 조건절에 항상 사용되는 컬럼
- 항상 '='로 비교되는 컬럼
- 분포도가 좋은 컬럼을 선두에 위치
- Order by절에서 자주 사용하는 정렬 순서로 컬럼 순서 지정
2. 조인 조건으로 사용되는 컬럼
ex) 아래와 같은 구조를 가진 테이블에서 Unique Index Scan을 할 수 없는 것
KEY1(PK) Number
KEY1(PK) Number
COL1 Varchar2
COL2 Varchar2
COL3 Varchar2
1. 모두 사용할 수 없다
2. WHERE KEY1 AND KEY2 =2
3. WHERE (KEY1, KEY2) IN ( (1,2) )
4. WHERE KEY1 = 1
-> 4 KEY1 = 1이라는 뜻은 키의 값이 1이라는 뜻이 아니라 True라는 뜻이다
'MySQL' 카테고리의 다른 글
MERGE INTO (0) | 2023.03.12 |
---|---|
MySQL cmd 관련 명령어 (0) | 2023.03.08 |
인덱스 (0) | 2023.03.08 |