Один из моих проектов имеет очень большую базу данных, в которой я не могу редактировать индексы и т. Д., Должен работать как есть.
При тестировании некоторых запросов, которые я буду выполнять в своей базе данных через службу, которую я пишу в .net, я видел, что они выполняются довольно медленно при первом запуске.
То, что они делали раньше, - это две основные (большие) таблицы, которые используются в основном. Они показали мне, что они открывают SQL Server Management Studio и запускают
SELECT *
FROM table1
JOIN table2
запрос, который запускается в первый раз около 5 минут, но затем занимает около 30 секунд, если вы запустите его снова, не закрывая SQL Server Management Studio. То, что они делают, они поддерживают SQL Server Management Studio открытой 24/7, поэтому, когда одна из их программ выполняет запросы, связанные с этими двумя таблицами (которые, по-видимому, являются почти всеми запросами, выполняемыми их программой), чтобы иметь 30 секунд время выполнения вместо 5 минут.
Это происходит потому, что я предполагаю, что 2 таблицы кэшируются, а затем нет (или почти нет) чтения с диска.
Является ли это хорошей идеей иметь службу, которая затем запускает запрос для кэширования этих 2 таблиц время от времени? Или есть лучшее решение для этого, учитывая тот факт, что я не могу редактировать индексы или разбивать таблицы и т. Д .?
Edit:
Извините, но мне, возможно, было неясно, надеюсь, у базы данных уже есть индексы, просто мне не разрешено редактировать их или что-то в этом роде.
Редактировать 2:
План запроса: https://www.brentozar.com/pastetheplan/?id=ByC5s06Dm