Start by using Explain SELECT ...
And compare to see if the query planner is running the same way.

Thanks,
Alex

On 05/12/2015 02:33 AM, McDonaldR wrote:
> Hello list
> 
> I have a question about how QGIS (specifically the pgRouting Layer plugin) 
> uses psycopg2 and a connection to PostgreSQL to run a query and return a 
> result.
> 
> I am using pgRouting with Ordnance Survey's Open Roads network for the UK.  
> It is a large network with over 3 million links and 2.6 million nodes.   
> Using the pgRouting Layer plugin in QGIS 2.6.1 and 2.8.2 to interact with the 
> network.  It is really slow to solve routes ~ 1m20s per solution.  I am also 
> using PgAdmin3 to run the same queries against the same network and they are 
> also slow (~1m20s) but I can speed them up using a bounding box in the query 
> (in some cases by 400x!).  In the pgRouting Layer plugin I have updated the 
> djikstra.py file to use the query with a bounding box but the result is still 
> returned in ~ 1m20s.  Running the same query in the SQL pane in DB Manager 
> returns the result in ~ 100ms.
> 
> So, I guess the question is "Is psycopg2 (or python) the bottleneck in 
> running queries in the pgRouting Layer plugin?" and maybe a secondary 
> question is "how does DB Manager connect to the database and run the query so 
> quickly?"
> 
> The queries
> 
> Without bounding box ~ 1m20s
> SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra('
>                 SELECT gid AS id,
>                          source::integer,
>                          target::integer,
>                          cost_len::double precision AS cost,
>                          rcost_len::double precision AS reverse_cost
>                         FROM or_network',
>                1190869, 586365, false, true);
> 
> With a bounding box ~ 200ms
> SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra('
>                 SELECT gid AS id,
>                          source::integer,
>                          target::integer,
>                          cost_len::double precision AS cost,
>                          rcost_len::double precision AS reverse_cost
>                         FROM or_network
>                         WHERE geometry && ST_Expand(
>                         (SELECT ST_Collect(the_geom) FROM 
> or_network_vertices_pgr WHERE id IN (1190869, 586365)),2000)',
>                 1190869, 586365, false, true);
> 
> Thanks in advance
> 
> Ross
> 
> 
> Ross McDonald | GIS Data Coordinator | Resources Department, IT Division | 
> Angus Council, Angus House, Orchardbank Business Park, Forfar, DD8 1AT
> T: 01307 476419 | F: 01307 476401 | E: 
> [email protected]<mailto:[email protected]>
> 
> 
> 
> This message is strictly confidential. If you have received this in error, 
> please inform the sender and remove it from your system. If received in error 
> you may not copy, print, forward or use it or any attachment in any way. This 
> message is not capable of creating a legal contract or a binding 
> representation and does not represent the views of Angus Council. Emails may 
> be monitored for security and network management reasons. Messages containing 
> inappropriate content may be intercepted. Angus Council does not accept any 
> liability for any harm that may be caused to the recipient system or data on 
> it by this message or any attachment.
> 
> 
> 
> _______________________________________________
> Qgis-developer mailing list
> [email protected]
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
> 

_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to