Cra*_*son 17 sql-server database-design data-structures
考虑MSDN关于SQL Server 2008 R2存储NUMERIC/DECIMAL精度的内容.
精度1到9是5个字节
精度10到19是9个字节
因此,如果我的业务案例在逻辑上要求具有2个小数位的数据类型和5位数的精度,如果我将其定义为NUMERIC(5,2 )或NUMERIC(9,2 ),则不会产生实际的性能或存储差异.
考虑到我故意忽略的是隐含的检查约束,因为我很可能在限制实际允许范围的列上设置实际检查约束.
在索引,查询性能或系统的任何其他方面,这会有所不同吗?
Gil*_*ter 40
数字(5,2)允许数字最多包括999.99.如果您尝试将1000.0插入其中,您将获得算术溢出.
数字(9,2)允许数字最多包括9 999 999.99
请记住,如果您计划总和此值,请允许额外的空间,否则您将获得溢出或者您需要进行显式转换.
它们占用相同的字节数.由于它们的存储大小相同,因此它们在数据页,内存,索引,网络传输等中是相同的.
出于这个原因,我通常计算出我需要存储的大小数量(如果使用数字),然后提高精度(可能是比例),这样我就低于存储大小增加的点.因此,如果我需要存储多达9900万的4位小数,那就是数字(12,4).对于相同的存储,我可以有一个数字(19,6),并为业务用户宣布他们确实需要在那里存储数十亿时提供一些安全空间.
归档时间: |
|
查看次数: |
52868 次 |
最近记录: |