보통 table 만들때 pk index 를 잡는데, 대부분은 unique index 더라고요.
그런데, 제가 create index ... 라고 해서 index를 만들면, nonuique index 로 잡혀요.
둘간의 차이가 뭔가요?
그리고, 하나의 테이블에 unique index 가 2개이상 있으면 안되는건가요?
Unique Index가 여러개 있어도 상관이 없습니다.
일반적으로 PK는 Unique Index중에 대표적인 것을
정하면 됩니다.
그리고 index생성시 Default는 Non Unique입니다.
Unique Index와 Non Unique는 실행계획 작성시
중요한 factor이 됩니다.
Unique Index > Non Unique 입니다.
1. PK(Primary Key)는 반드시 Unique해야 합니다. 만약 PK가 Unique하지 않다면, PK로 정의될 수 없습니다. PK가 Unique하지 않다면 개체 무결성(Entity Integrity)에 위배되기 때문입니다. 그래서 항상 PK Index는 Unique Index로 생성됩니다.
2. Unique Index와 Non-Unique Index의 차이점은 Index를 구성하는 컬럼 데이터 값의 중복 허용 여부에 달려 있습니다. 물론 Index를 Unique 또는 Non-Unique로 작성하는 것에 따랄 다소 Query의 성능차가 발생합니다.
3. 한 Table에 몇 개의 Unique Index를 생성해도 아무런 문제가 발생하지 않습니다. 그러나, Index는 데이터의 입력, 수정, 삭제시 추가 비용을 발생하므로 성능을 고려하여 적절하게 Index를 정의하는 것이 바람직합니다.
4. PK 정의 시에는 Table에 정의 가능한 식별자(Candidate Identifier)중 다음에 특성을 갖는 식별자를 PK로 정의합니다.
- Unique: 다른 모든 사례를 구별할 수 있는 유일한 것
- Not Null: Null 값이 될 수 없을 것
- Short: 가능하면 짧을 것
- Simple: 간단하게 구성할 것