SQL Server - как обеспечить кеширование результатов запроса? - PullRequest
3 голосов
/ 11 августа 2011

У меня есть приложение, первая страница которого после входа в систему предоставляет пользователю много данных.Запрос к базе данных занимает много времени - скажем, 10 секунд.База данных находится в SQL Server 2008, выполнение запроса строится как подготовленный оператор в Java.Данные, которые должны отображаться, будут, как правило, меняться только один раз в день.Так что - если бы я мог кэшировать этот результат и отображать его намного быстрее, это было бы идеально.

Однако я не совсем уверен, что мне нужно сделать, чтобы сократить это 10-секундное ожидание - каждый раз, когда язагрузить страницу такая же задержка происходит.Что мне нужно сделать, чтобы SQL Server кэшировал результаты запроса?Похоже, что на второй загрузке с минуты на минуту это происходит не так быстро - с чего мне начинать исследовать?

Вся помощь очень ценится!

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Вы должны посмотреть на индексированные представления.

Они позволяют вам хранить в индексе результаты запроса (в форме представления), к которому оптимизатор может получить косвенный или прямой доступ (т. Е. Он «знает», что у него есть данные и будет извлекать его для запросов, кроме тех, которые относятся к это мнение).

Существует ряд ограничений, указанных в ссылке.

Это единственный действительно эффективный способ (помимо создания и управления таблицами результатов) для кэширования сложных результатов запросов, таких как агрегаты.

Я предполагаю, что ваш запрос сложный и / или содержит агрегированные поля и группировки, что ВСЕГДА повлечет за собой дополнительные издержки обработки, даже если страницы данных уже кэшированы в памяти.

1 голос
/ 12 августа 2011

Если данные обновляются только один раз в день, попробуйте записать результаты в обычную таблицу и периодически обновлять таблицу (при условии, что у вас есть доступ, необходимый для этого).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...