고유 한 클러스터형 인덱스와 클러스터 된 기본 키간에 실질적인 차이점이 있습니까?


17

둘 사이에는 의미 또는 의도에 차이가있을 수 있지만 클러스터 된 기본 키와 클러스터 된 고유 인덱스간에 동작 또는 성능 차이가 있습니까?

답변:


15

한 가지 주요 차이점은 고유 인덱스가 기본 키에서 허용되지 않는 NULL 값을 가질 수 있다는 것입니다. 클러스터링 여부에 관계없이 이는 기본 키의 실제 구현과 고유 키의 주요 차이점입니다.

아, 그리고 테이블이 하나의 PK와 많은 영국을 가질 수 있다는 사실 :-).

이것은 성능이 아닌 INTENT의 차이점입니다. 그렇지 않으면 차이가 없다고 생각합니다. PK 또는 영국 뒤에 SQL Server는 (클러스터링 여부에 따라) 요청에 따라 인덱스를 작성하며 사용 방식은 소스에서 투명합니다.


따라서 NOT NULL UNIQUE CLUSTEREDRDMS가 무의식적 임에도 불구하고 메타 데이터의 관점에서 특정 UQ가 "특별"하다는 것을 강조하기 위해 (A)의 별칭으로 또는 (B)를 제외하고 PK를 사용할 이유 가 없습니까?
모든 거래의 존

예, 그런 식으로 옵션 B를 직접 선택합니다 :-).
Marian

부적절한 경우 특수 값 NULL 사용을 중지해야 할 이유가 있습니다.
JamesRyan

@JamesRyan : All Trades의 이유 #A의 Jon이 다룹니다.
Andriy M

1
@JamesRyan : 네, 사이 PRIMARY KEYNOT NULL UNIQUE, 전자가로 전환하는 것이 훨씬 더 어려울 것이다 NULL UNIQUE(제약 조건이 이미 외래 키에 의해 참조 된 경우 특히). 에서 실수로 변경을 방지 NOT NULL할 수 NULL있습니다.
Andriy M

8

클러스터 된 기본 키와 고유 한 클러스터형 인덱스 사이에는 고유 한 클러스터형 인덱스가 NULL 값을 가질 수있는 것 외에 다른 것이 없습니다.

고유하지 않은 클러스터형 인덱스에는 고유하지 않은 값을 처리해야하는 고유 식별자가 있습니다.


해당 테이블의 추가 인덱스가 기본 키로 작성된 인덱스를 무시하고 클러스터형 인덱스의 행을 직접 가리키는 것을 의미합니까?
bernd_k

1
맞아요. 비 클러스터형 인덱스는 기본 키가 아닌 클러스터링 키를 가리 킵니다. 기본 키가 클러스터되지 않은 키인 경우 외래 키를 통해 사용할 수 있도록 NULL 값을 지원하지 않는 열에 고유성을 적용하기 만하면됩니다.
mrdenny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.