Hvis jeg forstår logikken rigtigt, er problemet det kartesiske produkt forårsaget af de to joinforbindelser. Din forespørgsel er lidt svær at følge, men jeg tror, at hensigten er bedre håndteret med korrelerede underforespørgsler:
select k.*,
(select sum(cost)
from ad_group_keyword_network n
where n.event_date >= '2015-12-27' and
n.ad_group_keyword_id = 1210802 and
k.id = n.ad_group_keyword_id
) as cost,
(select sum(clicks)
from keyword_click c
where (c.date is null or c.date >= '2015-12-27') and
k.keyword_id = c.keyword_id
) as clicks
from ad_group_keyword k
where k.status = 2 ;
Her er den tilsvarende SQL Fiddle.
EDIT:
Undervalget skal være hurtigere end group by
på de uaggregerede data. Du har dog brug for de rigtige indekser:ad_group_keyword_network(ad_group_keyword_id, ad_group_keyword_id, event_date, cost)
og keyword_click(keyword_id, date, clicks)
.