存储小的负值

问题描述 投票:0回答:4

注意:我意识到这里的问题不会严重影响数据库中的性能或存储大小,但我有兴趣听取专家的意见(如果有的话)。

我正在编写一个应用程序,需要对

datetime
值执行操作并将结果偏移量存储在数据库中。我希望偏移量保持不变(大约 -3),但因为源日期(每个学期的开始日期)是由大学级别的委员会设置的,并且因为我的应用程序正在处理定期、可预测的时间间隔联系学生(也将由委员会设定)有可能在 -30 到 30 之间。

我最初打算将生成的偏移量存储为

tinyint
,但由于它在 SQL Server 2008 中是未签名的,所以我不确定什么在这里最有效。我应该使用
smallint
还是类似
numeric(2,0)
的东西?

t-sql sql-server-2008 tinyint
4个回答
6
投票

只需使用smallint。别想太多。

(在此处插入有关过早优化的标准文本。)


2
投票

numeric(2,0)
存储大小 为 5 个字节,而 smallint
2 个字节
,因此只需使用
smallint


2
投票

Numeric(2,0)
实际上会占用5个字节的存储空间,所以我建议使用
smallint
,它只占用2个字节


0
投票

根据您的大小限制,我会倾向于不太容易出错的实现,并在最小/最大值上给自己足够的余地。对于所有可能的情况,使用能够满足您当前和未来需求的数据类型。如果您觉得可能需要存储空间,请给自己更大的数据类型。

无论哪种情况,您的数据访问层都必须适应数据库列的大小。

© www.soinside.com 2019 - 2024. All rights reserved.