В настоящее время я работаю с запросом в MSSQL, который выглядит следующим образом:
SELECT
...
FROM
(SELECT
...
)T1
JOIN
(SELECT
...
)T2
GROUP BY
...
Внутренние выборки относительно быстрые, но внешний выбор объединяет внутренние выборки и занимает невероятно много времени для выполнения, часто по тайм-ауту. Удаление группы с помощью делает ее несколько более быстрой, а изменение соединения на LEFT OUTER JOIN также немного ускоряет процесс.
Зачем выполнение группировки с помощью выбора, который объединяет два внутренних выбора, приводит к тому, что запрос выполняется так медленно? Почему INNER JOIN работает медленнее, чем LEFT OUTER JOIN? Что я могу сделать, чтобы устранить эту проблему дальше?
РЕДАКТИРОВАТЬ: Что делает это еще более запутанным, так это то, что два внутренних запроса ограничены датами, и общий запрос выполняется медленно только при просмотре диапазонов дат между началом июля и любым другим днем июля, но если диапазоны дат - любое до 1 июля и сегодня он работает нормально.