具有外键的快照表与具有实际值的快照表

时间:2016-06-30 10:45:56

标签: sql-server database tsql data-modeling

在我们客户的一个数据库中,有一些快照表汇总了许多其他表中的有用信息(例如每个时期每个客户的状态等)。

然而,快照表主要包含其原始表的外键。因此,为了获得有关快照的有用信息,我们必须多次将它们连接到相应的表。这些连接通常需要很长时间。另一方面,向数据库中的所有FL列添加索引(或者至少在我们的查询中的WHERE子句中的列上)会显着减慢数据库的速度。

所以我的问题是,拥有真实值而不是外键的快照表会不会更好?如果答案是否定的,如果原始表格被更新(例如,如果被称为蜡烛'蜡烛'现在' Lamp'的话),它不会超过快照表的目的。当然快照保持一致但在这种情况下它真的是快照吗?)

1 个答案:

答案 0 :(得分:1)

由于您提到的原因,我倾向于存储实际数据而不是FK值。也就是说,更好的解决方案可能是将此历史数据与相关属性(IE维度)重新定位,并对其进行重组以进行分析。 Data warehousing肯定是一个解决方案,虽然这些可能是非常大规模的项目,所以你需要适当地理解它的价值和范围。但是,即使是针对他们尝试捕获的特定事件的轻量级星型模式也可能是比基于事务的表关系的大型历史表更好的解决方案(特别是如果针对相关表的查询逻辑是复合物)。

相关问题