Проблема з продуктивністю pgRouting, здається, полягає в тому, що нові pgr_astar та pgr_dijkstra використовують цілий графік (що гарантує рішення, якщо такий є). Просте рішення для досягнення кращих показників - обмеження використовуваного графіка на меншу площу. У нього є свої проблеми, як іноді, вони можуть створювати графіки, які неможливо вирішити
(SELECT ST_Expand(ST_Extent(geom_way),0.1) as box FROM hh_2po_4pgr as l1 WHERE l1.source =7 OR l1.target = 12)
Створює BBOX над колекцією джерела та цілі та розширює його на 0,1 градус, тоді той самий запит використовується для обмеження розміру графіка в pgr_ запиті
Dijkstra від 1,2s до ~ 65ms
SELECT seq, id1 AS node, id2 AS edge, g.geom_way as the_geom
FROM pgr_dijkstra(
'SELECT id, source, target, cost FROM hh_2po_4pgr as r,
(SELECT ST_Expand(ST_Extent(geom_way),0.1) as box FROM hh_2po_4pgr as l1 WHERE l1.source =7 OR l1.target = 12) as box
WHERE r.geom_way && box.box',
7, 12, false, false
) as r INNER JOIN hh_2po_4pgr as g ON r.id2 = g.id ;
A * від 2s до ~ 50ms
SELECT seq, id1 AS node, id2 AS edge, cost
FROM pgr_astar(
'SELECT id, source, target, cost, x1,y1,x2,y2 FROM hh_2po_4pgr as r,
(SELECT ST_Expand(ST_Extent(geom_way),0.1) as box FROM hh_2po_4pgr as l1 WHERE l1.source =7 OR l1.target = 12) as box
WHERE r.geom_way && box.box',
7, 12, false, false
);
osm2po використовувався для імпорту даних (останніх у Фінляндії) до таблиці postgis. до колонки geom_way доданий індекс суті та запуск вакуумного аналізу для бази даних. спільна пам'ять 1G. workmem 512M