2011-12-14 15 views
0

에 새 레코드를 찾습니다. 내 응용 프로그램에서 테이블을 10 분 간격으로 읽는 기능 (이름을 FindNewRecordsAndUpdate으로 지정)을 작성하고 지정된 사용자에 대해 새로운 Statistic 레코드의 수만큼 CreditLeft 필드를 감소시켜야합니다. 내 관심사는 다음번에 함수를 실행하여 Statistic 필드에 새 레코드를 찾고 이미 계수 된 것을 건너 뛰는 경우입니다. Statistic에 Counted (bool) 필드를 추가하고 이미 "used"레코드에 대해 True를 설정할 수 있지만 더 나은 솔루션 withotu가 새 필드를 추가 할 수 있습니까?나는이 분야 <code>UserId</code><code>DateStamp</code><code>Data</code> 또한 <code>CreditsLeft</code> (INT) 필드가 데이터베이스에 <code>User</code> 테이블이 <code>Id</code>와 <code>Statistic</code> 테이블이 데이터베이스 테이블

답변

0

적어도 3 다른 옵션 :

  1. trigger를 사용합니다. 행이 통계 테이블에 삽입 될 때, 나머지는 사용자가 자동으로 그냥 SUM (데이터)

  2. 사용 indexed view에 "사전을 얻기 위해 통계 테이블을 통해 온 디맨드 aggregate

  3. 업데이트입니다 나는 사용자 테이블에 denormalised 데이터를 피하기 위해 (쿼리 빈도에 따라와 점 3) 지점이 가고 싶어, 2

개인적 점에서 "합계를 계산합니다.

+0

통계표가 최대 10 백만 레코드까지 커질 수 있기 때문에 2 번 지점에 대해 확실하지 않습니다. – Tomas

+0

@Tomas : 1,000 만 레코드가 아무것도 아닙니다. 어쨌든 가장 가능성이 높은 특정 사용자를 필터링 할 것임을 기억하십시오. 그러나 그것이 너무 많이되면 어쨌든 3 점을 얻게됩니다. – gbn