고유 인덱스 디자인 지침
고유 인덱스는 인덱스 키에 중복 값을 포함할 수 없으므로 테이블의 모든 행이 고유합니다. 고유 인덱스를 지정하는 것은 데이터 자체가 고유하다는 특성이 있을 때만 의미가 있습니다. 예를 들어 기본 키가 EmployeeID인 경우 HumanResources.Employee 테이블의 NationalIDNumber 열 값이 고유하도록 하려면 NationalIDNumber
열에 대해 UNIQUE 제약 조건을 만듭니다. 사용자가 이 열에서 두 명 이상의 직원에 대해 동일한 값을 입력하면 오류 메시지가 표시되고 중복된 값이 입력되지 않습니다.
여러 열로 구성된 고유 인덱스를 사용하면 인덱스 키의 각 값 조합이 고유합니다. 예를 들어 LastName, FirstName 및 MiddleName 열의 조합에 대해 고유 인덱스를 만들면 테이블에 있는 각 행에서 이러한 열의 값 조합이 모두 서로 다릅니다.
클러스터형 인덱스와 비클러스터형 인덱스 모두 고유 인덱스가 될 수 있습니다. 따라서 열의 데이터가 고유하면 같은 테이블에서 하나의 고유 클러스터형 인덱스와 여러 개의 고유 비클러스터형 인덱스를 만들 수 있습니다.
고유 인덱스의 장점은 다음과 같습니다.
- 정의된 열의 데이터 무결성이 보장됩니다.
- 쿼리 최적화 프로그램에 유용한 추가 정보가 제공됩니다.
PRIMARY KEY 또는 UNIQUE 제약 조건을 만들면 지정된 열에서 고유 인덱스가 자동으로 생성됩니다. UNIQUE 제약 조건을 만드는 것과 제약 조건의 영향을 받지 않는 고유 인덱스를 만드는 것에는 큰 차이가 없습니다. 데이터 유효성 검사가 동일한 방식으로 수행되고 쿼리 최적화 프로그램에서는 제약 조건에 의해 생성된 고유 인덱스와 수동으로 만든 고유 인덱스를 동일하게 취급합니다. 그러나 데이터 무결성을 유지하는 것이 목적일 때는 열에 UNIQUE 또는 PRIMARY KEY 제약 조건을 만들어야 합니다. 그렇게 함으로써 인덱스의 용도가 명확해집니다.
고려 사항
- 데이터에 중복된 키 값이 있으면 고유 인덱스, UNIQUE 제약 조건 또는 PRIMARY KEY 제약 조건을 만들 수 없습니다.
- 데이터가 고유한 경우 고유성을 강제로 적용하려면 같은 열 조합에 고유하지 않은 인덱스 대신 고유 인덱스를 만들면 쿼리 최적화 프로그램에 추가 정보가 제공되어 실행 계획의 효율성이 향상됩니다. 이 경우 가급적 UNIQUE 제약 조건을 만들어 고유 인덱스를 만드는 것이 좋습니다.
- 고유 비클러스터형 인덱스에는 키가 아닌 포괄 열이 포함될 수 있습니다. 자세한 내용은 포괄 열이 있는 인덱스를 참조하십시오.
인덱스 옵션
고유 인덱스를 만들 때 몇 가지 인덱스 옵션을 지정할 수 있습니다. 이때 다음 옵션에 대해서는 특별히 주의를 기울여야 합니다.
- IGNORE_DUP_KEY
- ONLINE
자세한 내용은 인덱스 옵션 설정을 참조하십시오.
참고 항목
개념
인덱스 만들기(데이터베이스 엔진)
일반 인덱스 디자인 지침