У меня следующая ситуация:
- .net 3.5 Клиентское приложение WinForm, обращающееся к SQL Server 2008
- Некоторые запросы, возвращающие относительно большой объем данных, довольно часто используются формой
- Пользователи используют локальный SQL Express и перезагружают свои компьютеры хотя бы ежедневно
- Другие пользователи работают удаленно через медленные сетевые подключения
Проблема заключается в том, что после перезагрузкив первый раз, когда пользователи открывают эту форму, запросы выполняются очень медленно и на быстром компьютере выполняются более или менее 15 секунд.После этого те же запросы занимают всего 3 секунды.Конечно, это связано с тем, что данные не кэшируются и должны быть сначала загружены с диска.
Мой вопрос:
Можно ли заранее принудительно загрузить необходимые данные в кэш SQL Server?
Примечание
Моей первой идеей было выполнение запросов вфоновый рабочий при запуске приложения, так что когда пользователь запускает форму, запросы уже будут кэшироваться и быстро выполняться напрямую.Однако я не хочу загружать результаты запросов клиенту, поскольку некоторые пользователи работают удаленно или имеют иные медленные сети.
Поэтому я подумал, просто выполняя запросы из хранимой процедуры и помещая результаты во временные таблицы.так что ничего не будет возвращено.
Оказалось, что некоторые из наборов результатов используют динамические столбцы, поэтому я не смог создать соответствующие временные таблицы, и поэтому это не является решением.
У вас есть какая-нибудь другая идея?