Skip to content

Unique Index

유니크 인덱스는 특정 컬럼 또는 컬럼 조합에 대해 중복된 값이 저장될 수 없도록 보장하는 제약 조건이자 인덱스로, PK와는 다음과 같은 차이가 있다.

  • 하나의 테이블에 여러 개 생성 가능
  • NULL 값 허용
  • 유니크 인덱스는 클러스터형 인덱스가 아닌, 비클러스터형(보조) 인덱스로 생성

유니크 인덱스는 일반 인덱스와 동일한 역할을 수행하지만, 읽기와 쓰기에 있어서는 일반 인덱스와 다음과 같은 차이점이 존재한다.

  • 읽기: 조회하려는 데이터 건수가 명확할 경우, 일반적인 보조 인덱스와 성능상 큰 차이 없음
  • 쓰기: 데이터를 추가하거나 수정할 때마다 유일성(Uniqueness)을 검증 과정 필요
    • 이 중복 체크 과정은 추가적인 디스크 읽기를 유발하여 일반 보조 인덱스보다 쓰기 성능 저하
    • 유니크 인덱스는 중복 여부를 즉시 확인해야 하므로, 쓰기 성능을 최적화하는 체인지 버퍼(Change Buffer) 사용 불가능
    • 중복 체크를 위한 읽기 잠금과 실제 데이터 삽입을 위한 쓰기 잠금이 경합하여 데드락이 발생할 가능성 존재

Last updated:

MySQL