我们的数据仓库中有一个CalendarTimeUTC维度表,如下所示:
表中的PK是CalendarTimeUTCId(群集)。这曾经是一个Int领域。所有事实表都包含CalendarId(其中一些是数十亿行分区表)。
我们希望在此字段中将DATE值设置为DATE + HOUR值。
示例数据(旧的和新的):
现在随着SQL 2008的出现以及DATETIME的闪亮新实现,是否有理由将维度的ID列从INT切换到DATETIME?
它会如何影响事实表中的索引大小?更重要的是,它将如何影响绩效?
答案 0 :(得分:1)
Datetime 数据类型占用8个字节。 Int 数据类型只需4个字节。如果您想要转换为日期数据类型(例如,因为您需要使用日期操作函数),我建议使用 smalldatetime 只需要4个字节。
就索引和性能而言:因为索引与数据的物理大小相同,我不相信你会看到性能损失,也不会增加索引的大小。