存储小的负值

时间:2011-10-17 17:08:02

标签: tsql sql-server-2008

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

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

我原本打算将生成的偏移量存储为tinyint,但由于它在SQL Server 2008中未签名,因此我不确定这里哪种方法最有效。我应该使用smallint,还是numeric(2,0)

4 个答案:

答案 0 :(得分:5)

只需使用smallint。不要过度思考它。

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

答案 1 :(得分:2)

numeric(2,0)的{​​{3}}为5个字节,smallintsmallint,因此只需使用{{1}}。

答案 2 :(得分:2)

Numeric(2,0)实际上需要5 bytes of storage,所以我建议smallinttakes 2 bytes

答案 3 :(得分:0)

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

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