Answer the question
In order to leave comments, you need to log in
How to optimize a query?
There is a request:
select ( select SUM(e.summ)
from myevents.event as e
LEFT JOIN myevents.type as t on t.id = e.type
WHERE (e.dtr >= '2018-04-01') AND (e.dtr <= '2018-04-31') AND
(t.id = 1)) as 'dohod',
(select SUM(e.summ)
from myevents.event as e
LEFT JOIN myevents.type as t on t.id = e.type
WHERE (e.dtr >= '2018-04-01') AND (e.dtr <= '2018-04-31') AND
(t.id = 2)) as 'rashod';
select ( select SUM(e.summ)
from myevents.event as e
LEFT JOIN myevents.type as t on t.id = e.type
WHERE (e.dtr >= '2018-05-01') AND (e.dtr <= '2018-05-31') AND
(t.id = 1)) as 'dohod',
(select SUM(e.summ)
from myevents.event as e
LEFT JOIN myevents.type as t on t.id = e.type
WHERE (e.dtr >= '2018-05-01') AND (e.dtr <= '2018-05-31') AND
(t.id = 2)) as 'rashod';
Answer the question
In order to leave comments, you need to log in
how it is downright sad.
1. You join the type table by id and immediately filter by it - filter immediately by event.type, the type table is not needed at all
2. If you need it in a few months, then in terms of performance, the fastest solution is sampling
select DATE_FORMAT(event .dtr,"%Y-%m"), event.type, sum(event.summ),
from event
where event dtr between ... and ...
group by DATE_FORMAT(event .dtr,"%Y-%m"), event.type, sum(event.summ)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question