Не уверен, что вижу необходимость в кешировании, но, может быть, я наивен? Как Cache узнает, изменились ли данные или нет?
SELECT ... lots of columns
FROM MyTable
WHERE UserID = 1234
AND LastUpdated > @MyLastUpdated
будет выполнять какую-либо серьезную работу только тогда, когда AND - это правда? Если вы вернете ноль строк назад, это не изменилось - или UserID = 1234 больше не существует, но если вам нужно знать, что запрос можно изменить, чтобы он тоже возвращался). Таким образом, я не считаю необходимым делать запрос «Имеется ли UserID = 1234, измененный с момента @MyLastUpdated», за которым следует полномасштабный SELECT *.
Если вы получите значение LastUpdated в списке столбцов, сохраните его, затем оно будет доступно в качестве параметра при следующей проверке изменения UserID = 1234.
(LastUpdated - это не время, когда вы последний раз проверяли, а время последнего обновления записи, разумеется, но его нужно каждый раз создавать по одним и тем же часам, если не в самом окне SQL, а на ПК клиента! !) и учитывая то, что происходит с летним временем осенью.)