2014-06-20 3 views
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 

매일 새로운 데이터 (수십만 개 레코드)가 들어옵니다. 내가하고 싶은 일은 각각의 레코드를 그 id에 대한 현재 데이터와 비교 한 다음 :

a) 속성이 일치하면 아무 작업도하지 않습니다. b) 특성이 다른 경우 EndDate가 현재 날짜가되도록 현재 레코드를 업데이트하고 새 특성으로 새 레코드를 만듭니다. c) 해당 ID에 대한 데이터가없는 경우 새 레코드를 만듭니다.

제 질문은 가장 효율적인 방법은 무엇입니까?

필자는 각 레코드를 비교하고 적절한 테이블을 업데이트하는 스크립트를 작성할 수 있지만 지능형 솔루션이 아닌 무차별 적으로 쓰러졌습니다.

커서를 사용하는 것이 좋습니까?

답변

0

어떻게 데이터를 처리합니까? 그것은 또는 배치로 오는대로?

만약 그렇다면, 가장 가능성있는 속성을 변경하고 가장 가능성이 적은 체크를하고 필요할 때마다 업데이트를 수행 할 것입니다. 수천 명의 10 명이 너무 느려지는 것에 대해 걱정할만한 데이터가 충분하지 않습니다. 이것은 곧장 나아갈 접근법입니다.

일괄 처리 (매일 비즈니스가 끝날 때와 같이)로 처리하는 경우 ID별로 데이터를 정렬 한 다음 종료 날짜를 내림차순으로 정렬하십시오. 다른 모든 ID 인스턴스를 삭제하고 최신 ID 만 고려하십시오. 중간 데이터가 중요하지 않습니다.

예 : id1에 2 개의 항목이 있고 endDate1 월 1 일과 endDate1 월 25 일에 다른 항목이 있습니다. 1 월 25 일 항목을 먼저보고 필요한 경우 업데이트하십시오. Jan 1 항목은 너무 오래되어서 그 점을 염려하지 않습니다.

관련 문제