MySQL에서 인덱스는 단순히 검색 성능을 높이기 위한 도구일 뿐만 아니라, 데이터의 무결성을 보장하는 제약 조건과도 밀접하게 연결되어 있습니다.
이번 글에서는 UNIQUE 제약 조건을 지정했을 때, MySQL이 자동으로 인덱스를 생성하는 동작 방식과 그 특징을 살펴보겠습니다.
UNIQUE 제약 조건이란?
UNIQUE 제약 조건은 해당 컬럼에 중복된 값이 들어가지 못하도록 제한하는 기능입니다.
예를 들어, 회원의 email이나 username은 보통 중복을 허용하지 않기 때문에 UNIQUE 제약 조건을 걸어둡니다.
그런데 이 UNIQUE 제약 조건은 단순히 데이터 중복만 막아주는 것이 아닙니다.
자동으로 인덱스까지 생성하여, 검색 성능 또한 개선해 줍니다.
실제 코드로 확인해보겠습니다.
users라는 테이블을 생성시 name이라는 컬럼에 UNIQUE를 지정해준 후 인덱스를 확인해보겠습니다.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) UNIQUE
);
SHOW INDEX FROM users;
- name 컬럼에도 자동으로 인덱스가 생성된 것을 확인할 수 있습니다.
- 이 인덱스는 중복을 막는 용도일 뿐만 아니라, 조회 속도도 향상시켜줍니다.
이처럼 UNIQUE 제약 조건을 통해 생성된 인덱스를 고유 인덱스(Unique Index) 라고 부릅니다.
- 값의 중복을 허용하지 않으면서도
- 빠른 검색이 가능한 인덱스입니다.
이는 일반 인덱스와 달리 중복 체크 + 탐색 속도 향상이라는 두 가지 역할을 동시에 수행합니다.
'SQL' 카테고리의 다른 글
[DB Optimization#7] 멀티 컬럼 인덱스(Multiple-Column Index)란? (0) | 2025.04.17 |
---|---|
[DB Optimization#6] 인덱스를 많이 걸면 정말 느려질까? (0) | 2025.04.17 |
[DB Optimization#4] Primary Key (0) | 2025.04.17 |
[DB Optimization#3] 인덱스(Index)란? (0) | 2025.04.16 |
[DB Optimization#2] MySQL 구조 (0) | 2025.04.16 |