我有一堆表,它们合并了不同级别的数据:季度、每小时、每天和每月。除此之外,还有一个包含“原始”数据的基表,这个表包含一些额外的列。统一表都有相同的列。
基表、季表和小时表使用smalldatetime类型的列为数据添加时间戳。这个列在每小时表和日表中也是可用的,但这里当然不需要时间方面。
为了简单起见,我想在这里也使用smalldatetime数据类型,但是对于列使用date数据类型可能会更好?
当涉及到性能时,类型之间真的有很大的区别吗?
发布于 2011-04-11 22:03:02
通常,使用所需的最小数据类型是一个好主意。您不应该使用varchar(max)甚至varchar(10)来存储2个字符的状态缩写。
在同样的意义上,如果您只需要日期(例如4/11/2001),那么使用Date类型而不是DateTime类型。
虽然这可能不是一个巨大的性能提升(DateTime比Date大5个字节),但如果您有多个字段和/或多个行,则可以开始累积。
发布于 2011-04-11 22:13:28
不同的数据类型有不同的size,会影响数据/索引的大小,这比查询性能(I/O开销)更重要。
另一方面,在数据类型之间进行转换的代价可能很高。此外,各种数据类型之间的隐式转换可能是错误的/意外的。
如果对日期列进行表之间的连接,我会保留一种类型的日期(在本例中为4字节smalldatetime ),如果不是这样,则保留尽可能小的日期类型-- smalldatetime用于存储小时和季度,date用于纯日期。
发布于 2018-05-01 14:34:14
范围
SmallDateTime: 1900年1月1日至2079年6月6日DateTime :1753年1月1日至1999年12月31日
精度
SmallDateTime:分钟DateTime :三百分之一秒(3.33)
存储
SmallDateTime: 4字节DateTime :8字节
https://stackoverflow.com/questions/5622158
复制相似问题