ปัญหาเกี่ยวกับประสิทธิภาพของ 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.2 วินาทีถึง ~ 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 * ตั้งแต่ 2 วินาทีถึง ~ 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