我正处于设计数据仓库的中间。有多个事实表,很可能在每个事实表中插入了数百个事实。即使它有点早,但我仍在考虑优化。
我有两张时间表
在我的所有事实表中,我都有完整的日期列。
您的经验是什么,我应该在代码中使用select语句来查询时间维度表中的维度ID,还是我允许事实表中的时间维度列为空,并使用触发器来填充值?
答案 0 :(得分:1)
当具有“魔术”值的代理键有益时,日期和时间维度是数据仓库中的(非常不寻常)情况。您可以在日期维度整数中创建主键,其值为20110516,时间维度为1 - 1440或1 - 2400。
我建议您在事实记录中计算相应的值并为其添加字段,例如CALENDAR_ID,TIME_OF_DAY_ID。根据数据的大小,您可能会受益于CALENDAR_ID的索引,甚至可能在其上进行分区。如果您确定数据质量,则可以跳过这些字段上的外键约束,以便在加载过程中获得一些性能。
答案 1 :(得分:0)