MS SQL тот же запрос выполняется медленно, затем быстро - PullRequest
0 голосов
/ 12 марта 2020

Я использую MSSQL2008. Запрос выполняется в основном медленно (> 12 часов), но в определенное время суток, при тех же данных, он выполняется быстро (<2 минуты). Нет заблокированных таблиц. </p>

Наблюдение состоит в том, что запрос выполняется очень медленно с LEFT OUTER JOIN табличной переменной, в конце может быть более 5 миллионов записей, которые нужно обработать и вставить в другую табличную переменную.

Я проверил настройку tempdb - она ​​установлена ​​до 1024, неограниченно. Где может быть подвох?

Я попытался уменьшить количество записей набора результатов (эти 5 миллионов записей), и это помогает, поэтому похоже, что у него проблемы с некоторыми ресурсами БД, ЦП в порядке, память включена сервер тоже в порядке, другие приложения, которые используют ту же БД, работают без сбоев. Более того, один и тот же запрос, одни и те же данные выполняются время от времени быстро (<2 минуты). </p>

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

Для лучшего изображения я прилагаю пример запроса выглядит так.

DECLARE @table_variable TABLE(
x
y
y
)

INSERT INTO @table_variable (this is fast always)
SELECT 
.
.
FROM DB_table

INSERT INTO another_table_variable
SELECT (this stm runs ages, but time to time it retrieve data in 2min)
DISTINCT 
coalesce(A1.x, A2.y),
coalesce(A1.xx, A2.yy),
coalesce(A1.xxx, A2.yyy),
coalesce(A1.xxxx, A2.yyyy)
FROM transactions tr
LEFT OUTER JOIN @table_variable A1  ON (condition tr.u = A1.u )
LEFT OUTER JOIN @table_variable A2  ON (condition tr.u = A2.uu )
LEFT OUTER JOIN @table_variable A3  ON (condition tr.u = A3.uuu )

Я не знаю, достаточен ли пример для каких-либо идей, но спасибо для любой из них.

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