首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server数值/十进制精度与存储

Server数值/十进制精度与存储
EN

Stack Overflow用户
提问于 2011-01-12 18:27:37
回答 1查看 64.3K关注 0票数 17

考虑到关于Server 2008的MSDN状态,R2存储的数值/十进制精度。

1到9的

精度为5字节

10到19的精度是9个字节。

因此,如果我的业务用例逻辑上要求数据类型为2位小数,精度为5位,那么如果我将其定义为数值(5,2)数值(9,2),则没有实际的性能或存储差异。

我有意忽略的一个考虑是隐含的check约束,因为我很可能会在列上放置一个实际的check约束,限制实际允许的范围。

当涉及到索引、查询性能或系统的任何其他方面时,这会有什么区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-12 19:05:48

数字(5,2)允许数字达到并包括999.99。如果你试图插入1000.0,你会得到一个算术溢出。

数字(9,2)允许数字达到并包括9999 999.99

请记住,如果您计划将此值相加,请允许额外的空间,否则会出现溢出,或者需要进行显式强制转换。

它们占用相同的字节数。因为它们的存储大小相同,所以它们在数据页、内存、索引、网络传输等方面都是一样的。

出于这个原因,我通常计算出我需要存储的大小号(如果使用数字),然后提高精度(也许是缩放),这样我就会低于存储大小增加的点。因此,如果我需要存储多达9900万位小数点4位,那将是数字(12,4)。对于相同的存储空间,我可以有一个数字(19,6),并给出一些安全的空间,当业务用户宣布他们确实需要在其中存储几十亿。

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

https://stackoverflow.com/questions/4672476

复制
相关文章

相似问题

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