Refactor SQL query in Worker to improve distance calculations: Replace the existing LEFT JOIN with a LATERAL join to enhance the selection of region distances based on transport mode, ensuring more accurate results. Update polling frequency in TransportWorker from once per second to once per minute for better resource management.
This commit is contained in:
@@ -228,7 +228,23 @@ SELECT
|
||||
FROM falukant_data.transport AS t
|
||||
JOIN falukant_data.vehicle AS v ON v.id = t.vehicle_id
|
||||
JOIN falukant_type.vehicle AS vt ON vt.id = v.vehicle_type_id
|
||||
LEFT JOIN falukant_data.region_distance AS rd ON ((rd.source_region_id = t.source_region_id AND rd.target_region_id = t.target_region_id) OR (rd.source_region_id = t.target_region_id AND rd.target_region_id = t.source_region_id)) AND (rd.transport_mode = vt.transport_mode OR rd.transport_mode IS NULL)
|
||||
LEFT JOIN LATERAL (
|
||||
SELECT rd.distance
|
||||
FROM falukant_data.region_distance AS rd
|
||||
WHERE (
|
||||
(rd.source_region_id = t.source_region_id AND rd.target_region_id = t.target_region_id)
|
||||
OR (rd.source_region_id = t.target_region_id AND rd.target_region_id = t.source_region_id)
|
||||
)
|
||||
AND (
|
||||
rd.transport_mode = vt.transport_mode
|
||||
OR rd.transport_mode IS NULL
|
||||
OR vt.transport_mode IS NULL
|
||||
)
|
||||
ORDER BY
|
||||
(rd.transport_mode = vt.transport_mode) DESC,
|
||||
(rd.transport_mode IS NULL) DESC
|
||||
LIMIT 1
|
||||
) AS rd ON TRUE
|
||||
LEFT JOIN falukant_data.branch AS b_target ON b_target.region_id = t.target_region_id AND b_target.falukant_user_id = v.falukant_user_id
|
||||
LEFT JOIN falukant_data.branch AS b_source ON b_source.region_id = t.source_region_id AND b_source.falukant_user_id = v.falukant_user_id
|
||||
WHERE (
|
||||
|
||||
Reference in New Issue
Block a user