我们有2张 table 。一个保存测量值,另一个保存时间戳(每分钟一个)
每个测量都持有一个 FK 到一个时间戳。
我们有 800 万(百万)次测量和 200 万个时间戳。
我们正在通过复制创建一个报告数据库,我的第一个解决方案是:当通过复制过程接收到新的度量时,查找正确的时间戳并将其添加到度量表中。
是的,这是数据的重复,但它用于报告,并且由于我们每 5 分钟进行一次测量并且用户可以查询年度数据(105.000 次测量),因此我们必须优化速度。
但是一个共同开发者说:你不必这样做,我们只是用join查询(在两个表上),SqlServer太快了,你看不出区别。
我的第一 react 是:对具有 8M 和 2M 记录的两个表进行连接不能“没有区别”。
对此,您的第一感觉是什么?
编辑:
新测量:每 5 分钟 400 条记录
编辑2:
也许问题不是那么清楚:
第一种解决方案是从时间戳表中获取数据,并在插入测量记录时将其复制到测量表中。
在这种情况下,我们在插入记录和一个额外的(重复的)时间戳值时有一个操作。在这种情况下,我们只查询一张表,因为它包含所有数据。
第二种解决方案是在查询中连接两个表。
最佳答案
我会创建一个 Indexed View(类似于 Oracle 中的物化 View ),它使用适当的索引连接表。
关于sql-server - 你对这个 SqlServer 设计问题的第一感觉,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3930710/