Мне интересно, есть ли способ узнать, изменились ли результаты запроса с момента последней проверки
По-другому, вам нужен способ автоматического ответа на вопрос «этотот же результат? »без извлечения всего результата.
Общий подход к этой проблеме заключается в том, чтобы придумать прокси-сервер быстрого запроса для всего состояния набора результатов и запросить его вместо этого.
Как только вы определили стабильные быстрые вычисления для всего набора результатов, вы можете вычислить, что в любое время меняются соответствующие данные;и только опросите сохраненный прокси, чтобы узнать, изменились ли данные.
Например, вы можете сказать, что «хэш SHA-256 полей lorem
, ipsum
и dolor
Это ваш прокси.Теперь вы можете:
Реализовать это вычисление внутри базы данных как функцию, может быть products_hash
.
Создать таблицу latest_products_hash
,в котором хранятся created
отметка времени и products_hash
, которые были вычислены в то время.
В вашем приложении извлеките самую последнюю запись из latest_products_hash
и сохраните ее для справки.
В базе данных есть запланированное задание или триггер для какого-либо события, которое, по вашему мнению, имеет смысл, которое автоматически вычислит и сохранит products_hash
в latest_products_hash
без каких-либо действий со стороны приложения..
Чтобы определить, были ли обновления, приложение снова запросит таблицу latest_products_hash
и сравнит свою самую последнюю запись с той, которую приложение сохранило для справки.
Только если последнее значение latest_products_hash
отличается, запросите таблицу products
и получите полный набор результатов.
Таким образомприложение опрашивает намного более быстрый запрос (наиболее-recent запись в latest_products_hash
) часто и избегая полного запроса products
, пока он не узнает, что набор результатов будет новым.