Я использую несколько соединений в запросе. Одно объединение позволяет мне выбирать названия различных категорий, которые я хочу суммировать. Другое объединение просто добавляет метаданные к моему запросу. По какой-то причине, когда я добавляю последнее соединение, мой запрос замедляется ... вниз. Я не уверен, в чем проблема.
values_table содержит фактические значения, по которым я хочу подвести итог, содержит строки, идентификатор запуска, значения, дату и категорию. Таблица категорий содержит список определенных категорий, по которым я хочу подвести итог. Meta_table представляет собой таблицу метаданных для каждого идентификатора прогона. Я заинтересован в том, чтобы выбрать те прогоны, у которых год = 2018, а месяц = 12. За каждый год и месяц у меня в таблице values_table более 600 000 записей.
SELECT SUM(CASE WHEN [values_table].Row = [category_table].Row THEN
[values_table].Value ELSE 0 END ) AS 'Value',
[values_table].Date AS Date, [meta_table].metadata as metadata
FROM [values_table]
JOIN [category_table]
ON [values_table].Row=[category_table].Row
AND [values_table].[Id] IN (SELECT [meta_table].[Id] FROM [values_table]
WHERE
Year = 2018 AND Month = 12)
JOIN [meta_table]
ON [values_table].[Id] = [meta_table].[Id]
AND [meta_table].[Year]= 2018
AND [meta_table].[Month] = 12
GROUP BY [values_table].Date;
Когда я запускаю этот код без последнего соединения, это занимает меньше секунды, когда я запускаю его с последним соединением, это занимает ... (не знаю, как долго я его остановил через 6 минут).