在SQL服务器2005年,我们定义的一些UDT(用户定义的数据类型)在特别是SK(对于代理键)。这些被定义为32位'int'.因此,尺寸是4个字节。

在SQL服务器2008年,UDT整的数据类型将使用一个不同的存储机制,这取决于精度:

储存 显示最大储存的大小UDT。最大储存的大小各不相同,根据精确度。

精确度(数字)。....存储(bytes)

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

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

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

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

一个后果是,Udt基于两int和bigint将占据9个字节!注:地int和bigint数据类型仍然占据4和8个字节分别!

9字似乎很重量级,用于替代关键UDT!

任何人都可以解释为什么是这样(在特别设计的理由,这是)?怎么来的这种差异之间的UDT和当地的数据类型?

是否有任何替代办法除了不使用Udt?

有帮助吗?

解决方案

原谅我,但我看来你已经得到了错误的。记住,"选择不打破"和微软将不会修改这一关键的发动机,而广告它强烈由于转换的问题。

表你来自的引述 十进制的数字 储存在 MSDN, ,这基本上是多 int

如果你使用一种严格的别名, 使用特殊数据类型 强烈暗示, int基于类型需要四个字节并没有更多。如果你使用CLR类型,有可龙,或者更多的开销。

无论如何,你可以验证的足迹的数据类型的寻找到 sys.类型

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top