인덱스(Index)란?
데이터 레코드에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성된 데이터 구조
- 데이터베이스 테이블에서 검색 속도를 향상시키기 위해 사용하는 보조 데이터 구조
- 데이터가 저장된 물리적 위치(주소)에 빠르게 접근 가능하게 함
- 장점
- 검색 속도 향상
- 정렬 및 그룹화 효율 증가
- 단점
- 인덱스 생성·유지에 따른 저장공간 증가
- 갱신 시 부하 발생
인덱스의 종류
- 트리 기반 인덱스
- 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것
- 인덱스를 트리 형태로 구성하여 검색 속도를 향상
- 비트맵 인덱스
- 각 키 값의 존재 여부를 비트(0, 1)로 표현하여 저장
- 값의 종류가 적은 컬럼(성별, 학년, 지역 등)에 적합
- 함수 기반 인덱스
- 컬럼 자체가 아닌, 함수나 식 결과를 기준으로 인덱스를 생성
- 비트맵 조인 인덱스
- 두 개 이상의 테이블을 조인한 결과를 인덱스로 관리
- 대규모 조인 쿼리 성능 향상에 효과적
- 도메인 인덱스
- 사용자가 직접 정의한 특수 인덱스
- 개발자가 필요한 인덱스를 직접 만들어 사용하는 것
클러스터드 vs 넌클러스터드 인덱스
| 구분 | 클러스터드 인덱스(Clustered) | 넌클러스터드 인덱스(Non-Clustered) |
| 정의 | 인덱스 키 순서에 따라 데이터가 물리적으로 정렬되어 저장 | 인덱스와 실제 데이터가 별도로 저장 |
| 데이터 정렬 여부 | O (실제 데이터가 정렬되어 있음) | X (데이터는 원래 위치에 그대로 있음) |
| 인덱스 개수 | 한 테이블에 하나만 생성 가능 | 한 테이블에 여러 개 생성 가능 |
| 검색 속도 | 매우 빠름 (데이터가 이미 정렬되어 있음) | 인덱스 검색 후 추가 데이터 접근 필요 |
| 삽입/삭제 시 재정렬 필요 | 있음 (정렬 유지 필요) | 없음 (단순 포인터 변경) |
- 클러스터드 인덱스 → 실제 데이터 정렬
- 넌클러스터드 인덱스 → 목차만 정렬
'정보처리기사' 카테고리의 다른 글
| 정보처리기사 실기 - 파티션 (0) | 2025.11.02 |
|---|---|
| 정보처리기사 실기 - 뷰와 클러스터 (0) | 2025.11.02 |
| 정보처리기사 실기 - 트랜잭션과 CRUD 분석 (0) | 2025.11.01 |
| 정보처리기사 실기 - 시스템 카탈로그(+ 메타 데이터, 데이터 디렉터리) (0) | 2025.11.01 |
| 정보처리기사 실기 - 반정규화 (0) | 2025.11.01 |