Несколько соединений и скорость обработки - PullRequest
0 голосов
/ 25 января 2019

Я использую несколько соединений в запросе. Одно объединение позволяет мне выбирать названия различных категорий, которые я хочу суммировать. Другое объединение просто добавляет метаданные к моему запросу. По какой-то причине, когда я добавляю последнее соединение, мой запрос замедляется ... вниз. Я не уверен, в чем проблема.

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 минут).

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