加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – SQL Server NUMERIC / DECIMAL精度vs存储

发布时间:2020-12-12 16:29:20 所属栏目:MsSql教程 来源:网络整理
导读:考虑到 MSDN关于SQL Server 2008 R2存储的NUMERIC / DECIMAL精度. Precision of 1 to 9 is 5 bytes Precision of 10 to 19 is 9 bytes 因此,如果我的商业案例逻辑上需要一个数据类型,具有2位小数和5位精度,如果将其定义为NUMERIC(5,2)或NUMERIC(9,2),则不会产
考虑到 MSDN关于SQL Server 2008 R2存储的NUMERIC / DECIMAL精度.

Precision of 1 to 9 is 5 bytes
Precision of 10 to 19 is 9 bytes

因此,如果我的商业案例逻辑上需要一个数据类型,具有2位小数和5位精度,如果将其定义为NUMERIC(5,2)或NUMERIC(9,2),则不会产生实际的性能或存储差异.

一个考虑到我有意忽略的是隐含的检查约束,因为我很可能对限制实际允许范围的列实际检查约束.

当涉及到索引,查询性能或系统的其他任何方面时,这会有所不同吗?

解决方法

数字(5,2)允许数字高达999.99.如果你尝试插入1000.0,你会得到一个算术溢出.

数字(9,2)允许数字高达9999 999.99

请记住,如果您计划总计此值,请允许额外的空间,否则您将获得溢出,否则您需要进行明确的转换.

它们占用相同数量的字节.由于它们的存储空间大小相同,因此在数据页,内存,索引,网络传输等方面都是一样的.

正是由于这个原因,我通常会找出我需要存储的大小数字(如果使用数字),然后增加精度(也可能是缩放),以便我刚刚低于存储大小增加点.所以如果我需要存储高达99万的4位小数,那将是数字(12,4).对于相同的存储,我可以有一个数字(19,6),并给一些安全的空间,当业务用户宣布他们确实需要存储十亿在那里.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读