2014-06-10 2 views
1

이 대체품에 대한 찬반론?클러스터되지 않은 GUID 기본 키 또는 고유 인덱스가있는 클러스터 된 int 기본 키 및 GUID 보조 키?

  1. 클러스터되지 않은 인덱스
  2. 고유 인덱스
와 보조 키와 클러스터 된 인덱스와 임의의 GUID와 순차적 인 정수 기본 키를 갖는 비 순차적 GUID 기본 키를 갖는

GUID 키에서 개체를 가져 오는 것입니다. 그러나 다른 이유로 인해 클러스터 된 인덱스가있는 순차 기본 키를 갖는 것이 어떤 것인지 궁금합니다.

물론 순차 GUID를 사용하고 GUID와 클러스터 된 인덱스를 모두 가질 수 있지만 그 옵션을 제쳐 놓고두면 어떤 대안이 더 좋을까요?

답변

0

GUID를 사용하여 레코드를 가져 오는 경우 순차 정수 기본 키가 필요 없다고 생각합니다. 그러나 다른 방법으로 테이블을 쿼리하는 경우 클러스터 된 인덱스로 대리 정수 기본 키를 갖는 것이 좋습니다. 클러스터 된 인덱스가 없으면 테이블이 힙이되고 SQL Server는 모든 레코드에 행 식별자를 추가합니다.이 식별자는 대리 키 열보다 클 수 있습니다. 여기를 참조하십시오 :

http://msdn.microsoft.com/en-us/library/hh213609.aspx

을 나는 또한 GUID보다는 서로 게이트 키를 사용하여 레코드를 검색 할 보일 것이다 가능합니다.

도움이되기를 바랍니다.

애쉬

0

이점은 조인입니다. 나는 당신이 자주 사용하는 접근법을 사용합니다 - 객체의 식별자로서 non-clusterd 고유 GUID와 조인을 위해 사용되는 기본 키로 int/bigint 필드를 사용합니다.

0

당신이 테이블에 추가 인덱스를 만들 경우 해당 인덱스가 기본 키 값으로 테이블 데이터를 참조합니다. 따라서 PK 컬럼을 작게 유지하면 이점이 있습니다. 내 대답은 클러스터 된 작은 int (IDENTITY) 기본 키를 만들고 GUID 값에 고유 한 클러스터되지 않은 인덱스가있는 것입니다.