데이터 검색 성능을 향상시키기 위해 사용되는 데이터 구조
책의 색인과 유사하게 작동
특정 키 값 기준으로 데이터 위치 빠른 검색 가능
인덱스 오버헤드: 데이터 변경 시 인덱스도 갱신해야 함
인덱스 생성
CREATE INDEX idx_lastname ON employees (last_name);
CREATE INDEX idx_department ON employees (department);
인덱스 활용 검색
SELECT * FROM employees WHERE last_name = 'Doe';
인덱스 삭제
DROP INDEX idx_lastname ON employees;
DROP INDEX idx_department ON employees;
인덱스 확인
SHOW INDEX FROM table_name
쿼리문이 사용하는 인덱스 우선순위
optimizer가 인덱스를 선택
EXPLAIN 키워드로 선택된 인덱스 확인 가능
EXPLAIN SELECT * FROM employees WHERE email = 'john.doe@example.com';
USE INDEX
SELECT * FROM employees USE INDEX (idx_email) WHERE email = 'john.doe@example.com';
FORCE INDEX
SELECT * FROM employees FORCE INDEX (idx_email) WHERE email = 'john.doe@example.com';
다중 열 인덱스(Multicolumn index, Composite index)
기본 키 생성 시 인덱스 자동 생성
Unique 인덱스
CREATE UNIQUE INDEX idx_email ON employees (email);
Covering 인덱스
Hash 인덱스
Full Scan이 더 좋은 경우
using index
로 표기