使用表中的大量条目优化SQL查询

时间:2018-11-15 19:08:04

标签: mysql sql

我正在尝试优化已嵌入选择的SQL查询:

SELECT *
  FROM orders o
    LEFT JOIN alarms a ON o.id = a.order_id
    INNER JOIN order_events o4_ ON o.id = o4_.order_id AND (o4_.event_type_id IN (6, 4, 5, 9))
    LEFT JOIN event_types et ON o4_.event_type_id = et.id
WHERE o.arrival > '2018-01-01'
  AND o.arrival <= '2018-12-31'
  AND EXISTS (SELECT 1
    FROM order_events as o_e
    WHERE o_e.order_id = o.id
    AND o_e.event_type_id = 4
  )
  AND NOT EXISTS (SELECT 1
    FROM order_events as o_e
    WHERE o_e.order_id = o.id
    AND o_e.event_type_id = 5
  )

我遇到的主要问题是我想排除订单事件类型为4的订单,并保留订单事件类型为5的订单。

有人可以建议如何优化此查询吗?

我的order_events很大(650.000行)。

0 个答案:

没有答案