1. Index란?
<aside>
Index(인덱스)는 데이터베이스에서 검색 속도를 빠르게 하기 위해 사용하는 구조입니다. 마치 책의 목차처럼 특정 데이터를 찾는 시간을 줄여주는 역할을 합니다.
</aside>
1.1. Index의 개념
테이블에서 원하는 데이터를 찾을 때, 일반적으로 모든 데이터를 순차적으로 검색하면 시간이 오래 걸립니다. 하지만 인덱스를 사용하면 해당 데이터가 저장된 위치를 미리 알고 있기 때문에 훨씬 빠르게 접근할 수 있습니다.
1.2. Index의 특징
- 검색 속도 향상: WHERE 절을 이용한 데이터 조회 시, 전체 테이블을 검색하는 것보다 빠르게 원하는 데이터를 찾을 수 있습니다.
- 자동 관리: 테이블의 데이터가 변경될 때(INSERT, UPDATE, DELETE), 인덱스도 자동으로 갱신됩니다.
- 공간 사용 증가: 인덱스를 생성하면 별도의 저장 공간이 필요합니다.
- INSERT/UPDATE 성능 저하 가능성: 인덱스가 많아지면 데이터 삽입, 수정, 삭제 시 인덱스도 함께 갱신되므로 성능이 저하될 수 있습니다.
2. Index의 사용 목적
- 검색 속도 향상: 특정 컬럼을 대상으로 빠르게 데이터를 찾기 위해 사용됩니다.
- ORDER BY 성능 향상: 데이터를 정렬할 때, 인덱스를 사용하면 연산 속도가 개선될 수 있습니다.
- JOIN 성능 향상: 여러 개의 테이블을 조인할 때, 인덱스를 사용하면 실행 속도가 향상됩니다.
- 고유성 보장: UNIQUE INDEX를 사용하면 중복된 값이 입력되지 않도록 할 수 있습니다.
3. Index 생성 문법 및 예제
3.1. Syntax
CREATE INDEX 인덱스명 ON 테이블명(컬럼명 [, 컬럼명 ...]);
3.2. 예제 1: 단일 컬럼 인덱스 생성
CREATE INDEX idx_employee_lastname ON employees(last_name);
설명: 이 명령어는 employees 테이블의 last_name 컬럼에 대한 인덱스를 생성하여, last_name을 조건으로 검색할 때 속도를 향상시킵니다.