Problem z wydajnością pgRouting polega na tym, że nowe pgr_astar i pgr_dijkstra używają całego wykresu (co gwarantuje rozwiązanie, jeśli takie istnieje). Prostym rozwiązaniem dla uzyskania lepszej wydajności jest ograniczenie wykorzystywanego wykresu do mniejszego obszaru. Ma swoje własne problemy, takie jak czasami może tworzyć wykresy, których nie można rozwiązać
(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)
Tworzy BBOX ponad kolekcję źródłową i docelową i rozwija ją o 0,1 stopnia, następnie to samo zapytanie służy do ograniczenia wielkości wykresu w zapytaniu pgr_
Dijkstra od 1,2 s do ~ 65 ms
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 * od 2s do ~ 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 został użyty do importowania danych (najnowsza Finlandia) do tabeli Postgis. dodano indeks gist do kolumny geom_way i uruchomiono analizę próżni dla bazy danych. pamięć współdzielona 1G. workmem 512M