Пример таблицы (PK date, user_id, thing_id):
date |user_id|thing_id|volume|
2018-01-12|100 |142 |12
2018-02-05|100 |140 |50
2018-02-07|100 |141 |30
2018-02-22|100 |142 |90
В строке БД, созданной для пользователя, вещь, если объем изменился с прошлого раза.
Мне нужно знать, какой объем пользователяиметь на любую дату.
Запрос SELECT DISTINCT ON (thing_id) * FROM datatable WHERE user_id = $1 AND date <= $2 ORDER BY thing_id, date DESC
работает, но это медленно, и если у меня будет миллионы строк, это будет проблемой.
В результате я хочу получить текущие объемы вещей:
updated_at|user_id|thing_id|volume|
2018-02-05|100 |140 |50
2018-02-07|100 |141 |30
2018-02-22|100 |142 |90
, когда я запрашиваю данные пользователя 100 для 2018-02-23 и
updated_at|user_id|thing_id|volume|
2018-02-05|100 |140 |50
2018-02-07|100 |141 |30
2018-01-12|100 |142 |12
для 2018-02-10
Каков наилучший способсделать это в PostgreSQL?Или, может быть, для этой задачи мне нужна база данных временных рядов?