Il problema con le prestazioni di pgRouting sembra essere che i nuovi pgr_astar e pgr_dijkstra utilizzano l'intero grafico (che garantisce la soluzione se ce n'è uno). Una soluzione semplice per ottenere prestazioni migliori è limitare il grafico utilizzato ad un'area più piccola. Ha i suoi problemi come a volte può creare grafici che non possono essere risolti
(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)
Crea BBOX sulla raccolta di origine e destinazione e la espande di 0,1 gradi, quindi viene utilizzata la stessa query per limitare la dimensione del grafico nella query pgr_
Dijkstra da 1,2 a ~ 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 * da 2s a ~ 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 è stato usato per importare i dati (finland-latest) nella tabella postgis. indice gist aggiunto alla colonna geom_way e analisi del vuoto completo eseguita per il database. memoria condivisa 1G. workmem 512M