首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server UDT大小2005到2008

SQL Server UDT大小2005到2008
EN

Stack Overflow用户
提问于 2009-03-13 02:21:42
回答 1查看 1.8K关注 0票数 4

在SQL Server2005中,我们特别在SK (用于代理键)上定义了一些UDT (用户定义的数据类型)。它们被定义为32位的'int‘。因此大小是4字节。

在SQL Server 2008中,整数数据类型的UDT使用不同的存储机制,具体取决于精度:

Storage显示UDT的最大存储大小。最大存储大小根据精度的不同而不同。

精度(位数).....Storage(字节)

1-9...............5

10 -19.....9

20 -28.13

29 -38.....17

这样做的一个结果是,基于int和bigint的UDT将占用9个字节!注意:原生int和bigint数据类型仍然分别占用4和8个字节!

对于代理键UDT来说,9个字节似乎相当重要!

有没有人能解释为什么会这样(特别是它的设计原理是什么)?为什么UDT和原生数据类型之间存在这种差异?

除了不使用UDT之外,还有其他方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-14 15:24:44

对不起,在我看来你弄错了。请记住,"SELECT不是坏的“,微软不会在没有强烈广告的情况下修改引擎的如此关键部分,因为转换问题。

您引用的表来自中的decimalnumeric存储,它们基本上大于int

如果您使用的是严格别名,Using special datatypes强烈建议int-based类型需要4个字节,最多不超过4个字节。如果你使用的是CLR类型,就会有龙,或者更多的开销。

无论如何,您可以通过查看sys.types来验证您的数据类型的占用空间

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/641244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档