SQL Server 2005에서는 UDT (사용자 정의 데이터 형식)를 특히 SK (대리 키용)로 정의했습니다. 이들은 32 비트 'int'로 정의되었습니다. 결과적으로 크기는 4 바이트였습니다. UDT를위한 최대 저장 크기를 표시합니다 SQL Server UDT 크기 2005 ~ 2008
저장 : SQL Server 2008의
는 정수 데이터 유형에 대한 UDT는 정밀도에 따라, 다른 저장 메커니즘을 사용합니다. 최대 저장소 크기는 정밀도에 따라 다릅니다.
정밀 (자리) ..... 저장소 (바이트)
1-9 ........................ 5
10-19 .................... 9
20-28 .................. ... 13
29 -이 38 ................... 17
한 결과는 INT와 BIGINT BOTH를 기반으로 UDT를 차지하는 것입니다 9 바이트! 참고 : native int 및 bigint 데이터 유형은 각각 여전히 4 및 8 바이트를 차지합니다.
9 바이트가 대리 키 UDT에 대해 꽤 무거운 것처럼 보입니다!
누구나 이것이 왜 그렇게 (특히 이것에 대한 설계 이유가 무엇 이었는지) 설명 할 수 있습니까? 어떻게 UDT와 원시 데이터 유형간에 이러한 불일치가 발생합니까?
UDT를 사용하지 않는 것 외에 다른 방법이 있습니까?
안녕 요한을 조사하여 해당 주셔서 감사합니다 당신의 데이터 유형의 풋 프린트를 확인할 수 있습니다. 나는 당신이 만든 점을 이해합니다. 하지만 "새로운 사용자 정의 데이터 유형"으로 이동하여 int를 기반으로 UDT를 만들면 정밀도는 10으로 표시되고 저장소는 sys.types에서 제안하는대로 4가 아닌 9 바이트로 표시됩니다. 그것에 대한 의견이 있으십니까? – PaoloFCantoni
안녕하세요 요한, 추가 연구에 따르면 UI 버그 인 것으로 나타났습니다. sys.types에 할당 된 실제 저장소 크기는 int의 경우 4 바이트입니다. 도움 주셔서 감사합니다. – PaoloFCantoni
감사합니다. (repwhoring 부분) 내 대답이 도움이 되었다면, upvote하고 허용으로 표시하십시오. –