| | |
| | | order by collect_time |
| | | </select> |
| | | |
| | | <!-- 查询活跃车辆ID(优化:添加LIMIT限制,避免大表扫描) --> |
| | | <!-- 查询活跃车辆ID(优化:使用GROUP BY替代DISTINCT,提升性能) --> |
| | | <select id="selectActiveVehicleIds" resultType="Long"> |
| | | select distinct vehicle_id |
| | | select vehicle_id |
| | | from tb_vehicle_gps |
| | | where collect_time >= #{startTime} |
| | | group by vehicle_id |
| | | order by vehicle_id |
| | | </select> |
| | | |
| | | <!-- 查询未被计算的GPS坐标(不在tb_vehicle_gps_calculated表中的记录) --> |
| | | <!-- 查询未被计算的GPS坐标(优化:使用NOT EXISTS替代LEFT JOIN ... IS NULL) --> |
| | | <select id="selectUncalculatedGps" resultMap="VehicleGpsResult"> |
| | | SELECT g.gps_id, g.vehicle_id, g.device_id, g.longitude, g.latitude, g.altitude, |
| | | g.speed, g.direction, g.collect_time, g.device_report_time, |
| | | g.platform_process_time, g.create_time, v.vehicle_no |
| | | FROM tb_vehicle_gps g |
| | | LEFT JOIN tb_vehicle_info v ON g.vehicle_id = v.vehicle_id |
| | | LEFT JOIN tb_vehicle_gps_calculated c ON g.gps_id = c.gps_id |
| | | INNER JOIN tb_vehicle_info v ON g.vehicle_id = v.vehicle_id |
| | | WHERE g.vehicle_id = #{vehicleId} |
| | | AND g.collect_time >= #{startTime} |
| | | AND g.collect_time <= #{endTime} |
| | | AND c.gps_id IS NULL -- 未被计算的GPS点 |
| | | AND NOT EXISTS ( |
| | | SELECT 1 FROM tb_vehicle_gps_calculated c |
| | | WHERE c.gps_id = g.gps_id |
| | | ) |
| | | ORDER BY g.collect_time |
| | | </select> |
| | | </mapper> |