SQL Server日期与smalldatetime

Ger*_*nck 17 sql-server

我有一堆表来整合不同级别的数据:季度,小时,每日和每月.除此之外,还有一个包含"原始"数据的基表,这个数据包含一些额外的列.统一表都具有相同的列.

基本,季度和小时表使用类型列smalldatetime来为数据添加时间戳.此列也将在每小时和每日表格中提供,但我当然不需要时间方面.

为了简单起见,我也希望在这里使用smalldatetime数据类型,但是对于列使用日期数据类型,性能可能更好吗?

在性能方面,这些类型之间是否存在很大差异?

tay*_*onr 14

使用您需要的最小数据类型通常是个好主意.您不应该使用varchar(max)或甚至varchar(10)来存储2个字符的州缩写.

同样,如果你只需要Date(例如4/11/2001),那么使用Date类型而不是DateTime类型.

虽然它可能不是一个巨大的性能提升(DateTime比Date大5个字节.)如果你有多个字段和/或多行,它可以开始加起来.

  • 是的我同意.还发现了一篇关于这个主题的好文章:http://www.mssqltips.com/tip.asp?tt = 1616.不是关于性能,而是比较存储日期的不同解决方案. (2认同)

Grz*_*lik 5

各种数据类型具有各种大小,这些大小会影响数据/索引的大小,这比查询性能(I / O成本)更为重要。

另一方面,在数据类型之间进行转换可能会非常昂贵。此外,各种数据类型之间的隐式转换可能是错误的/意外的。

我会保持一种类型的日期(4个字节smalldatetime在这种情况下),如果你表之间的连接上的日期列,或者如果不能保持尽可能小的日期型- smalldatetime用于存储小时和宿舍,并date纯粹的日期。