SQL 左连接

select me.equipment_id,
       count(1)
from bl_platform_order bpo
         join md_connector mc on bpo.connector_id = mc.id
         join md_equipment me on mc.equipment_id = me.equipment_id
         left join md_station ms on me.station_id = ms.station_id and me.operator_id = ms.operator_id
where bpo.end_time >= '2021-12-06 00:00:00'
  and bpo.end_time < '2021-12-13 00:00:00'
  and bpo.order_type = 5
  and bpo.order_state = 41
  and me.equipment_status != 50
group by me.equipment_id;

这条语句一开始在关联md_station的时候我没有使用 left join 进行关联,直接使用 join ,执行发现非常地慢。后面改成 left join 后,可以正常执行。

问题在于,station 表中可能有一些站点下并没有充电桩,内连接时会检索station全表,导致查询速率非常慢。

但是这条语句的唯一性字段在于设备id,所以使用左连接即可达到查询目的。

posted on 2021-12-16 13:40  leaverk  阅读(264)  评论(0编辑  收藏  举报