У меня есть таблица, в которой каждый ActorId
имеет Value
, но Value
будет меняться со временем, и мы отслеживаем все изменения этих значений.
Пример:
Id ActorId Value Timestamp
--------------------------------
1 5 10 2019-01-05
2 8 8 2019-01-07
3 8 5 2019-01-08
4 5 15 2019-01-11
5 3 12 2019-01-11
6 3 7 2019-01-12
7 3 14 2019-01-14
[...]
Если мы загрузим все в память, то для каждого Actor
будет довольно просто проверить, каким будет значение в любой момент времени (или оно будет нулевым / неопределенным , если оно никогда не былоустановить до даты запроса).Дело в том, что мне действительно нужно отправить все эти данные в браузер и сделать это в JavaScript.
Проблема в том, что полная таблица станет действительно очень большой.Как в уникальных ActorIds , так и в изменения значений на каждый ActorId.
Обычно мне просто требуется относительно небольшой выбор ActorId
с и короткий период времени, скажемдва месяца.
Я мог бы сделать что-то вроде:
SELECT *
FROM [ActorValue]
WHERE
ActorId IN (5, 8, 12, [...])
AND Timestamp >= '2019-02-01'
AND Timestamp <= '2019-04-01'
И отправить эти результаты в JavaScript для дальнейшей обработки.
Проблема в том, что мне также нужно значение в начале периода.Поэтому для каждого ActorId мне нужны значения в диапазоне дат и одно изменение значения до этого .
Каков наилучший способ решения этой проблемы без загрузки всех изменений значения в память.
Так что я теоретически ищу что-то вроде:
AND Timestamp >= '2019-02-01' -- plus the entry before this date, grouped by ActorId