문제

SQL Server2005 년,우리는 우리 정부 UDT(사용자 정의 데이터 형식)에서 특히 SK(에 대한 대리 Key).이들로 정의 32 비트를'int'.결과적으로의 크기는 4 바이트입니다.

SQL Server2008,UDT 을 위해 정수 데이터 형식을 사용하는 다른 저장 메커니즘에 따라 정밀도:

스토리지 최대 저장소 크기를 표시합한다.최대 저장소 크기에 따라 달라질 정밀도입니다.

정밀도(숫자).....저장(바이트)

1 – 9........................5

10 – 19....................9

20 – 28...................13

29 – 38...................17

하나는 Udt 모두를 기반으로 int 이터 타입을 차지 9 바이트!참고:native int 이터 타입 데이터 형식이 여전히 차지 4 8 바이트로 각각!

9 바이트는 것 같다 꽤 헤비급에 대한 대리 키 UDT!

할 수 있는 사람이 왜 이렇게(특히 무엇을 디자인에 대한 이론적 근거이었)?어떻게 이러한 불일치 사 UDT 및 기본 데이터 유형?

이 있는 다른 방법 외에 사용하지 않 Udt?

도움이 되었습니까?

해결책

실례,하지만 당신이 그것이 잘못입니다.기억,"선택하지 않은 부서지는"Microsoft 지 않을 수정을 이러한 중요한 조각의 엔진 광고없이 그것을 강하게 전환으로 인하여 문제입니다.

테이블에 당신을 인용하에서 오 숫자 저장소 MSDN, 는 기본적으로 더 이상 int

를 사용하는 경우 엄격한 별칭 를 사용하여 특수한 데이터 형식 강력한다는 힌트를 int기반의 유형은 네 가지 바이 더 이상 없습니다.를 사용하는 경우 CLR 유형,거기에 용이 있거나,더 오버헤드가 발생합니다.

어쨌든 확인할 수 있습니다 풋프린트의 데이터 형식으로 보고 sys.유형

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top