Sql 新日期比旧日期好吗?

Sql 新日期比旧日期好吗?,sql,performance,sql-server-2005,sql-server-2008-r2,Sql,Performance,Sql Server 2005,Sql Server 2008 R2,我们的数据仓库中有一个CalendarTimeUTC维度表,如下所示: 表中的主键是CalendarTimeUTCId(集群)。这曾经是一个整型字段。所有事实表中都有CalendarId(其中一些是数十亿行分区表) 我们希望在此字段中从日期值改为日期+小时值 样本数据(旧数据和新数据): 现在,随着SQL 2008的出现,以及DATETIME的全新实现,是否有理由将维度的ID列从INT切换到DATETIME 它将如何影响事实表中的索引大小?更重要的是,它将如何影响性能?Datetime数据类

我们的数据仓库中有一个CalendarTimeUTC维度表,如下所示:

表中的主键是CalendarTimeUTCId(集群)。这曾经是一个整型字段。所有事实表中都有CalendarId(其中一些是数十亿行分区表)

我们希望在此字段中从日期值改为日期+小时值

样本数据(旧数据和新数据):

现在,随着SQL 2008的出现,以及DATETIME的全新实现,是否有理由将维度的ID列从INT切换到DATETIME


它将如何影响事实表中的索引大小?更重要的是,它将如何影响性能?

Datetime数据类型占用8个字节Int数据类型只需要4个字节。如果您想转换为日期数据类型(例如,因为您需要使用日期操纵函数),我建议使用只需要4个字节的smalldatetime


至于索引和性能:因为索引将位于相同的数据物理大小上,我不相信您会看到性能下降或索引大小增加。

我不会在日期字段中输入小时数-日历维度中的记录数是原来的24倍…我很难理解这与
日期类型的关系。以前(据我所知,在SQL Server 2008之前)您的日历表只包含日期,但值为
datetime
类型,因为当时SQL Server中没有
date
类型。现在,您计划添加时间部分,并且再次必须使用
datetime
。那么你说的日期是什么意思呢?@Andriy M:我打错了-我的意思是日期时间。Raj,你为什么要这么做?Sql Server 2005具有日期时间数据类型。2008版的哪个部分是闪亮的和新的?为什么要创建一个看起来像日期的id?为什么要存储一个看起来像ID的日期?日历维度表中是否还有其他未显示的字段?