AFAIK, du pivoterar din data och jag tror att du använder max(case ...) ... group by
har bra prestanda när det gäller att pivotera data.
Jag kan föreslå att du använder den här frågan istället:
select event_date
, max(case when r.class = 40 then name end) `Class 40 Winner`
, max(case when r.class = 30 then name end) `Class 30 Winner`
from events e
left join results r on e.event_id = r.result_event and r.position = 1
group by event_date;