0

我已经创建了一个表格,可以随时间跟踪对象的各种属性。

 Id | Attribute1 | Attribute2 | Attribute3 | StartDate  | EndDate
------------------------------------------------------------------
 01 |   100      |   Null     |   Null     | 2004-02-03 | 2006-04-30
 01 |   100      |   Null     |    D       | 2006-05-01 | 2010-11-06
 01 |   150      |   Null     |    D       | 2010-11-07 | Null
 02 |   700      |   5600     |   Null     | 1998-09-27 | 2002-01-27

每天都有新数据(约 10 万条记录)出现。我想要做的是将每条记录与该 id 的当前数据进行比较,然后:

a) 如果属性匹配,什么也不做。b) 如果属性不同,则更新当前记录,使 EndDate 为当前日期,并使用新属性创建新记录。c) 如果该 id 没有任何数据,则创建一条新记录。

我的问题是,最有效的方法是什么?

我可以编写一个脚本来遍历每条记录,进行比较,并酌情更新表格,但我觉得这是蛮力,而不是智能解决方案。

这是使用游标的好地方吗?

4

1 回答 1

0

你如何处理数据?当它进来或分批?

如果是这样,那么我将对最有可能更改的属性和最不可能更改的属性进行一组检查(只是为了优化检查)并根据需要进行更新。成千上万的数据不足以担心速度过慢。这是直截了当的方法。

如果您作为一个批次处理(例如在每天的业务结束时),请按 ID 对数据进行排序,然后按结束日期降序排列。删除所有其他 ID 实例,只关心最新的一个。没有中间数据会很重要。

示例:您有 2 个 id 为 1 的条目,一个带有 endDate Jan 1 另一个带有 endDate Jan 25 的条目。首先查看 Jan 25 条目并根据需要进行更新。1 月 1 日的条目太旧,无法在这一点上关心。

于 2014-06-20T14:15:46.273 回答