【发布时间】:2011-05-31 15:01:59
【问题描述】:
我们的数据仓库中有一个 CalendarTimeUTC 维度表,如下所示:
表中的 PK 是 CalendarTimeUTCId(集群)。这曾经是一个 Int 字段。所有事实表中都有 CalendarId(其中一些是数十亿行的分区表)。
我们希望在此字段中将 DATE 值改为 DATE+HOUR 值。
样本数据(旧的和新的):
现在随着 SQL 2008 的出现以及 DATETIME 的闪亮新实现,是否有理由将维度的 ID 列从 INT 切换到 DATETIME?
它将如何影响事实表中的索引大小?更重要的是,它将如何影响性能?
【问题讨论】:
-
我不会在日期字段中输入小时数 - 您的日历维度中的记录要多 24 倍......
-
我很难理解它是如何与
date类型相关联的。以前(在 SQL Server 2008 之前,我理解)您的日历表只包含日期,但值是datetime类型,因为当时 SQL Server 中没有date类型。现在您计划添加时间部分,并且您必须再次使用datetime。那么你暗示date是什么意思? -
@Andriy M:我的输入错误——我的意思是
DATETIME。 -
Raj,你为什么要这样做? Sql Server 2005 具有 DateTime 数据类型。 2008 版的哪一部分是闪亮的和新的?为什么要创建一个看起来像日期的 id?为什么要存储看起来像 ID 的日期?您的日历维度表中是否还有其他未显示的字段?
标签: sql performance sql-server-2005 sql-server-2008-r2