Unique Constraint
- 목적: 특정 컬럼이나 컬럼 조합에 대해 중복된 값을 허용하지 않도록 보장하는 제약 조건입니다.
- 특징:
- 동일한 값이 두 개 이상 존재할 수 없습니다.
- 하나의 테이블에 여러 개의 Unique 제약 조건을 정의할 수 있습니다.
- Null 값은 보통 허용되며, 데이터베이스 시스템에 따라 하나의 Null만 허용되거나 여러 개의 Null을 허용할 수 있습니다.
예제 (SQL):
CREATE TABLE Users (
user_id INT PRIMARY KEY,
email VARCHAR(255) UNIQUE
);
위 코드에서는 email 컬럼이 Unique 제약 조건을 가지므로, 같은 이메일 주소를 가진 사용자가 두 번 저장될 수 없습니다.
인덱스(Index)
- 목적: 데이터 검색과 조회 성능을 향상시키는 구조입니다.
- 특징:
- 특정 컬럼(또는 컬럼 조합)의 값을 기반으로 데이터베이스가 빠르게 레코드를 찾을 수 있습니다.
- Primary Key, Unique, Foreign Key 등과 같은 제약 조건을 정의할 때, 데이터베이스는 자동으로 인덱스를 생성하여 성능을 최적화합니다.
예제 (SQL):
CREATE INDEX idx_email ON Users(email);
위 코드는 email 컬럼에 대해 인덱스를 생성하여, 검색 성능을 개선합니다.
Unique와 인덱싱의 관계
- Unique 제약 조건을 설정하면, 데이터베이스가 자동으로 Unique 인덱스를 생성합니다.
- Unique 인덱스는 값의 중복을 방지하면서, 동시에 검색 속도를 향상시키는 역할을 합니다.
- 개발자가 별도로 인덱스를 생성할 필요 없이, Unique 제약 조건을 설정하면 자동으로 처리됩니다.
동작 원리:
- Unique 제약 조건은 인덱스를 사용하여 삽입 또는 업데이트 시 중복 여부를 빠르게 확인합니다.
- 예를 들어, Unique 제약이 적용된
email 컬럼에 새로운 값을 삽입하려고 할 때, 인덱스를 활용해 기존 데이터에 동일한 값이 있는지 빠르게 검사합니다.
중요한 점: