我创建了一个跟踪对象各种属性的表。
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
每天都有新数据(约数万条记录)。我想要做的是将每个记录与该id的当前数据进行比较,然后:
a)如果属性匹配则不执行任何操作。 b)如果属性不同,请更新当前记录以使EndDate为当前日期,并使用新属性创建新记录。 c)如果没有该id的任何数据,则创建一条新记录。
我的问题是,最有效的方法是什么?
我可以编写一个遍历每条记录的脚本,进行比较,并根据情况更新表格,但我觉得这是一种蛮力,而不是一种智能解决方案。
这是一个使用游标的好地方吗?
答案 0 :(得分:0)
您如何处理数据?它是批量生产还是批量生产?
如果是这样的话,那么我会对最可能的属性进行一系列检查以进行更改,并且最不可能(只是为了优化检查)并根据需要进行更新。数以千计的数据不足以担心放慢太多。这是一种直接的方法。
如果您作为批处理(如每天业务结束时)处理,请按ID排序数据,然后按结束日期降序。删除所有其他ID实例,只关心最新的实例。没有中间数据是重要的。
示例:您有2个id为1的条目,一个有endDate Jan 1,另一个有endDate Jan 25.首先查看Jan 25条目并根据需要进行更新。 1月1日的入职时间太长了,无法关心。