SQL Server十进制(9,0)与INT
我们的一位客户使用DECIMAL(18,0)他的SQL Server 2008R2数据库中的数据类型作为某些列。由于列的增长非常缓慢,因此他最近提议更改数据类型DECIMAL(5,0)以重新获得一些存储空间。 根据MSDN库,与DECIMAL(5,0)数据类型一样,DECIMAL(9,0)数据类型的存储空间为5个字节。INT是小1个字节,但可以存储-2 ^ 31到2 ^ 31范围内的所有内容,而不是DECIMAL(5,0)可以存储的-99,999到99,999 。即使是最大的DECIMAL5个字节(DECIMAL(9,0)),也只能存储-999,999,999到999,999,999(小于范围的一半)范围内的整数INT 4字节)。 我可以想到使用DECIMALover 的两个“好处” INT: 之后可以增加规模,而无需使用更多的存储空间 可以将精度扩展到38位,而无需更改数据类型 但是我认为这些并不是真正的好处: 将比例添加到整数仅在极少数情况下才有意义(在大多数情况下比例确实有所不同,也可以预先添加) SQL Server将每个精度/小数位组合视为不同的数据类型,因此在提高精度或小数位时,不会单独保留数据类型。 这让我想知道:DECIMAL(5,0)整数数据类型的附加好处是什么?