+/Database

쿼리 최적화 및 성능 향상 기법 - 인덱스의 개념과 종류

writtenbyrla 2024. 5. 2. 11:05

인덱싱이란?

목차와 같은 개념으로 데이터 조회 시 인덱스 범위 내에서 데이터를 먼저 찾음으로써 데이터를 빠르게 조회할 수 있도록 한다.

 

 

 

인덱스 생성 및 삭제 방법(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(넌클러스터 인덱스)

  • 목차에서 페이지를 찾은 후 그 페이지로 이동
  • 데이터 원본은 정렬되지 않고 인덱스 페이지만 정렬됨
  • 한 테이블에 여러 개의 인덱스 선언 가능
  • 인덱스 리프 페이지는 데이터가 위치하는 포인터 기능을 하고, 별도의 인덱스 페이지를 따로 만들기 때문에 용량을 더 차지함
  • 검색 속도는 느리지만 데이터의 입력, 수정, 삭제 속도가 빠름