在SQL Server 2005中,我们定义了一些UDT(用户自定义数据类型),其中一个是SK(代理键)。 这些被定义为32位'int',因此大小为4个字节。
在SQL Server 2008中,整数数据类型的UDT使用不同的存储机制,具体取决于精度:
存储 显示UDT的最大存储大小。最大存储大小因精度而异。
精度(数字).....存储(字节)
1-9........................5
10-19....................9
20-28...................13
29-38...................17
这样做的一个后果是基于int和bigint的UDT将占用9个字节! 注意:本机int和bigint数据类型仍分别占用4和8个字节!
对于代理键UDT来说,9个字节似乎很重量级!
有人能解释这是为什么吗?特别是这种设计理念是什么?为什么UDT和本机数据类型之间存在差异?
除了不使用UDT外,是否还有其他替代方法?
在SQL Server 2008中,整数数据类型的UDT使用不同的存储机制,具体取决于精度:
存储 显示UDT的最大存储大小。最大存储大小因精度而异。
精度(数字).....存储(字节)
1-9........................5
10-19....................9
20-28...................13
29-38...................17
这样做的一个后果是基于int和bigint的UDT将占用9个字节! 注意:本机int和bigint数据类型仍分别占用4和8个字节!
对于代理键UDT来说,9个字节似乎很重量级!
有人能解释这是为什么吗?特别是这种设计理念是什么?为什么UDT和本机数据类型之间存在差异?
除了不使用UDT外,是否还有其他替代方法?