2011-12-14 3 views
0

Statistic У меня есть таблица с этими полями IdUserIdDateStampData Также есть User таблица в базе данных, которая имеет CreditsLeft поле (INT). Мне нужно создать функцию (давайте назовите ее FindNewRecordsAndUpdate), которая будет читать таблицу Statistic каждые 10 минут от моего приложения и уменьшит CreditLeft поле по номеру Statistic записей, найденных для указанного пользователя. Моя основная забота - когда я выполняю функцию FindNewRecordsAndUpdate в следующий раз, как найти новые записи в поле Statistic и пропустить уже посчитанные? Я могу добавить поле Counted (bool) в Statistic и установить True для уже «используемых» записей, но, возможно, есть лучшее решение с добавлением нового поля?Найти новых записей в таблице базы данных

ответ

0

По крайней мере, 3 другие варианты:

  1. Используйте trigger. Поэтому, когда строки вставляются в статистической таблице, баланс пользователя автоматически обновляется

  2. Просто сделать aggregate по требованию по статистике таблицы, чтобы получить SUM (Data)

  3. Используйте indexed view к «предварительно вычислить»СУММА в пункте 2

Лично я бы на точку 2 (и точки 3 в зависимости от частоты запроса), чтобы избежать denormalised данных в таблице пользователя.

+0

Не уверен, что точка 2, так как таблица статистики может вырасти до 10 миллионов записей. – Tomas

+0

@ Томас: 10 миллионов записей ничего. Помните, что вы, скорее всего, будете фильтровать для данного пользователя. Но если это становится слишком много, у вас есть точка 3 в любом случае – gbn

Смежные вопросы