新日期比旧日期好吗?

时间:2011-05-31 15:01:59

标签: sql performance sql-server-2005 sql-server-2008-r2

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

enter image description here

表中的PK是CalendarTimeUTCId(群集)。这曾经是一个Int领域。所有事实表都包含CalendarId(其中一些是数十亿行分区表)。

我们希望在此字段中将DATE值设置为DATE + HOUR值。

示例数据(旧的和新的):

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

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

就索引和性能而言:因为索引与数据的物理大小相同,我不相信你会看到性能损失,也不会增加索引的大小。