PgRouting performansıyla ilgili sorun, yeni pgr_astar ve pgr_dijkstra'nın tüm grafiği kullanmasıdır (eğer varsa çözümü garanti eder). Daha iyi performans elde etmek için kullanılan basit çözüm, kullanılan grafiği daha küçük alanlarla sınırlamaktır. Bazen çözülemeyen grafikler yaratabileceği gibi kendi sorunları var
(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)
Kaynak ve hedef toplama üzerinde BBOX oluşturur ve 0.1 derece genişletir, ardından pgr_ sorgusundaki grafik boyutunu sınırlamak için aynı sorgu kullanılır
Dijkstra 1.2s ~ ~ 65ms arası
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 arası
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 tablosuna veri (finland-latest) aktarmak için kullanıldı. geom_way sütununa gist endeksi eklendi ve veritabanı için tam vakum analizi çalıştırıldı. paylaşılan hafıza 1G. workmem 512M