인덱싱이란?
목차와 같은 개념으로 데이터 조회 시 인덱스 범위 내에서 데이터를 먼저 찾음으로써 데이터를 빠르게 조회할 수 있도록 한다.
인덱스 생성 및 삭제 방법(MS-SQL 기준)
/* 인덱스 생성 */
CREATE INDEX emp_idx ON dbo.emp (hiredate)
/* 인덱스 삭제 */
DROP INDEX emp_idx ON dbo.emp
인덱스 종류
1. Clustered Index(클러스터 인덱스)
- 인덱스를 통해 해당 페이지로 바로 이동
- 인덱스 컬럼을 기준으로 데이터가 물리적으로 정렬
- 검색 속도가 빠름
- 기본키(Primary Key)를 생성하면 자동으로 클러스터 인덱스를 생성하며 테이블 당 한 개만 생성할 수 있음
→ 테이블 생성 시 PK를 생성하면 클러스터형 인덱스가 자동으로 생성되는 것을 확인할 수 있다!
클러스터형 인덱스는 어떨 때 사용하며 좋을까?
데이터 입력과 조회 패턴이 서로 다른 테이블에서 사용하기 유용하다.
예를 들어, 매일 영업 실적을 집계하는 테이블(데이터 입력)에서 사원별 실적 조회(조회)를 빈번하게 하는 경우는
사번이 첫 번째 정렬 기준이 되도록 하여 조회 시 사원별로 확인할 수 있도록 한다.
CREATE CLUSTERED INDEX 영업실적_IDX ON 영업실적(사번, 일)
2. NonClustered Index(넌클러스터 인덱스)
- 목차에서 페이지를 찾은 후 그 페이지로 이동
- 데이터 원본은 정렬되지 않고 인덱스 페이지만 정렬됨
- 한 테이블에 여러 개의 인덱스 선언 가능
- 인덱스 리프 페이지는 데이터가 위치하는 포인터 기능을 하고, 별도의 인덱스 페이지를 따로 만들기 때문에 용량을 더 차지함
- 검색 속도는 느리지만 데이터의 입력, 수정, 삭제 속도가 빠름
'+ > Database' 카테고리의 다른 글
쿼리 최적화 및 성능 향상 기법 - 인덱스(데이터 스캔 방식) (2) | 2024.05.08 |
---|---|
[MS-SQL] 쿼리 성능 측정 방법 (0) | 2024.04.29 |