vst*_*ien 14 sql-server datatypes t-sql
我们的一位客户将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 。即使是最大的DECIMAL
5 个字节 ( DECIMAL(9,0)
) 也只能存储 -999,999,999 到 999,999,999 范围内的整数(不到INT
4 个字节提供的范围的一半)。
我可以想到使用DECIMAL
over的两个“好处” INT
:
但在我看来,这些并不是真正的好处:
这让我想知道:DECIMAL(5,0)
整数数据类型的额外好处是什么?
我同意,只要您比较 DECIMAL(9, 0) 与 INT 或 DECIMAL(18, 0) 与 BIGINT,在存储空间方面就没有真正的好处。(在单个字节内。)
在处理方面,就像@Andriy 所说的 DECIMAL 自然会分成一种不会丢失小数部分的类型,如果这对您很重要。
在另一方面,与本地INT类型的工作是多快从数字的角度来看,如果你做了很多的SUM()S或比较(如搜索上的值),因为它们是由CPU更有效的流水线。int 比较是两个汇编操作码(MOV、CMP),但任何十进制比较将很多很多。
归档时间: |
|
查看次数: |
18302 次 |
最近记录: |