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,所以使用左连接即可达到查询目的。