wlzboy
5 天以前 7de1396e315896dbc72a9d54e44f77434ea90f18
ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml
@@ -130,26 +130,29 @@
        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 &gt;= #{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 &gt;= #{startTime}
          AND g.collect_time &lt;= #{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>