微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

考虑到 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),并给一些安全的空间,当业务用户宣布他们确实需要存储十亿在那里.

原文地址:https://www.jb51.cc/mssql/82360.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐