Проблемы производительности после нормализации базы mysql

Есть таблица заказов orders и таблица статусов orders_status в которой хранится id, order_id, status_id, date У каждого заказа, к примеру, до 10 статусов, таким образом получается что бы взять все статусы мне нужно сделать 10 join, но это занимает много времени при составлении отчета по большому количеству заказов. Можно ли как-то избежать большой нагрузки из-за большого количества join к одной таблице или только путем денормализации? мои попытки решения с множественным join

SELECT *,
       s1.date AS status_1,
       s2.date AS status_2
FROM orders o
       JOIN orders_status s1
         ON s1.status_id = 1
            AND s1.order_id = o.id
       JOIN orders_status s2
         ON s2.status_id = 2
            AND s2.order_id = o.id 

и так далее


Ответы (1 шт):

Автор решения: Герман Борисов

Вот так делается то, о чем писал @Konst в комментарии

SELECT
  o.*,
  MAX(CASE WHEN s.status_id = 1 WHEN s.date END) as status_1,
  MAX(CASE WHEN s.status_id = 2 WHEN s.date END) as status_2
FROM orders o
LEFT JOIN orders_status s ON s.order_id=o.id
GROUP BY o.*
→ Ссылка