【发布时间】:2019-11-28 14:53:45
【问题描述】:
在 SQL Server 中,我将十进制数据存储在表中(从不用于连接或过滤)。此十进制数据是可变的 - 80% 的时间它具有单个数字值(1、4、5),其余 20% 具有 16 位小数(0.8999999761581421、3.0999999046325684)。
我想知道是否可以使用varchar 而不是float 节省任何存储空间,或者我是否应该坚持使用float,因为这是数字数据?
【问题讨论】:
-
decimalfloat。 “我有十进制数据”你真的是指“我有浮点数据”吗?如果不是,您的数据实际上是decimal而不是float?无论哪种方式,都不要使用varchar来存储数字数据。 -
@varun 。 . .这在我看来很可疑。我猜整数是某种代码,小数是真实值——数据不应该混合在一个列中。
-
无论您是保留
FLOAT还是使用DECIMAL,都不要使用字符串类型来存储数字数据,无论存储考虑如何。 唯一 可能合适的时间是,如果您非常具体地需要存储从外部系统接收到的数据完全,因为您得到它,一个字符一个字符,即使它也有数值。这显然不是其中一种情况。如果存储甚至是一个问题,您应该在数据类型之前考虑行和页面压缩之类的事情,因为混淆字符串和数字是一个巨大的痛苦来源。
标签: sql sql-server varchar sqldatatypes