Для этого запроса:
SELECT t2.l, t1.m, t1.y, sum(t1.s)
FROM table1 t1 JOIN
table2 t2
ON t1.h = t2.h
WHERE t1.c = 405 AND t2.l in (500)
GROUP BY t2.l, t1.m, t1.y;
Я бы предложил две стратегии индексации.Предполагая, что условие на t1
является наиболее ограничительным, попробуйте table1(c, h, m, y, s)
и table2(h, l)
.
Если t2 является более ограничительным, то table2(l, h)
и table1(h, c, m, y, s)
.
Обратите внимание, что агрегация займет время, если JOIN
возвращает значительное количество строк.Возможно, не удастся получить результат за секунду.Возможно, вам придется прибегнуть к сводной таблице с триггерами для обновления значений.