Я работаю с инструментом, который показывает некоторые подсчеты из таблицы в пользовательском интерфейсе. Чтобы получить эти числа, один запрос выполняется каждые 5 секунд. Я не могу внести какие-либо структурные изменения в инструмент, но я могу изменить запрос, чтобы получить подсчеты.Есть ли эквивалент кэш результатов Microsoft SQL?
Проблема в том, что выполнение запроса может занять до 5 секунд, в результате чего пользователь ничего не может сделать. Данные, которые запрос извлекает, изменяются только каждые несколько минут.
Инструмент может работать как на Oracle, так и на MSSQL. В Oracle я смог значительно улучшить скорость запроса, используя кэш результатов запроса (добавлен/* + RESULT_CACHE */подсказка к запросу). Поскольку результат запроса изменяется только время от времени, кеширование - это полезное решение в этом конкретном случае. Время выполнения переходит к чему-то вроде 1ms вместо 5 секунд, которые были раньше.
Мне было интересно, есть ли эквивалент в Microsoft SQL.
Спасибо, но я не думаю, что это то, что я искал. Выполняемый запрос удалит один и тот же результат, если скажем 29 из 30 исполнений. Из-за этого было бы неплохо, если бы SQL-сервер мог кэшировать результат запроса, а не план выполнения, как вы можете в oracle. Я бы, однако, был доволен любым улучшением, но запросы на master.dbo.syscacheobjects не дают мне никаких строк вообще. – ErikL
@ ErikL, см. Ответы на этот вопрос SO: http://stackoverflow.com/questions/4095762/can-i-request-sql-server-to-cache-a-certain-result-set – RoadWarrior