注意:我意识到这里的问题不会严重影响我的数据库中的性能或存储大小,但我很有兴趣听取专家意见(如果有的话)。
我正在编写一个需要对datetime
值执行操作的应用程序,并将结果偏移量存储在数据库中。我希望偏移量保持不变(大约-3),但因为源日期(每个学期的开始日期)是由大学级委员会设定的,并且因为我的申请是处理以固定,可预测的间隔联系学生(也可以由委员会制定)它可能在-30到30之间。
我原本打算将生成的偏移量存储为tinyint
,但由于它在SQL Server 2008中未签名,因此我不确定这里哪种方法最有效。我应该使用smallint
,还是numeric(2,0)
?
答案 0 :(得分:5)
只需使用smallint。不要过度思考它。
(在此处插入有关过早优化的标准文本。)
答案 1 :(得分:2)
numeric(2,0)
的{{3}}为5个字节,smallint
为smallint
,因此只需使用{{1}}。
答案 2 :(得分:2)
Numeric(2,0)
实际上需要5 bytes of storage,所以我建议smallint
,takes 2 bytes。
答案 3 :(得分:0)
根据您的尺寸限制,我会倾向于一个不易出错的实现,并给出自己足够的余地/最大值。对于所有可能的情况,请使用满足您当前和未来需求的数据类型。如果您觉得可能需要存储空间,请给自己更大的数据类型。
无论哪种情况,您的数据访问层都必须适应数据库列大小。