2010-01-08 5 views
0

newid가 생성 한 GUID를 사용하는 것이 성능 문제의 기본 키로는 적합하지 않음을 알고 있습니다.newid와 newsequentialid를 사용하는 복합 기본 키

{newsequentialid(), newid()}가있는 복합 기본 키는 새 GUID가 이전에 생성 된 GUID보다 큽니다.

여기에도 성능 문제가 있습니까?

당신은 사람이 이런 짓을 했을까하지만 난 코드 분석 규칙을 쓰고 있어요 그리고이 직선보다 더 나쁘다 사용자가 :) 할

감사

답변

4

무슨 미친 일을 모르는 이유를 생각할 수 있습니다 , newid()를 사용하여 생성 된 단일 GUID.

왜 ?? 이 때문에 대규모 인덱스 조각화가 하나의 GUID 두 배의

  • 의 원인 (때문에 NEWID() 부분의) 아직 완전히 임의의

    • , 모든 클러스터되지 않은 인덱스가 더 부풀어 덜 효율적 (32 바이트 대 지능 IDENTITY 4 바이트) 그래서

    나도에게 추천 할 것입니다 : 단지 NEWSEQUENTIALID()와

    • 스틱 당신의 PK의 기본, 당신이 정말로 원하는 경우 N으로 GUID를 스타일의 PK
    • (복제 요구 사항이 아닌 경우) 최적의 성능을 위해 INT/BIGINT ID를 사용 당신이 가진 최고의 두 가지 선택의

    을 EED. 임의의 GUID가 클러스터링 키에 대한 정말 정말 나쁜 선택 이유에 킴벌리 트립의 우수한 문서를 참조하십시오

  • +0

    ... 그리고 NEWSEQUENTIALID는 계속되지 않습니다 SQL 인스턴스를 다시 시작한 후 시퀀스 – gbn