<br><br><div class="gmail_quote">On Wed, Aug 3, 2011 at 9:03 PM, Martin Lee <span dir="ltr">&lt;<a href="mailto:martinchlee@gmail.com">martinchlee@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

[Small note: The author of this question is familiar with PostGIS, but is not familiar with C language]<br><br>I have a &#39;ways&#39; table in PostGIS consisting of about 90,000 ways. When I do a pgRouting shortest path query it takes about 2,5 seconds to get the result.<br>

</blockquote><div><br></div><div>This is really not many ways. It should be a lot faster.</div><div><ul><li>Did you check your tables have indices?</li><li>Do you use bounding boxes not to load all the data (but in your case it&#39;s such a small number of ways that even loading all shouldn&#39;t take long.)</li>

</ul></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>I was pretty unsatisfied with it (I would like it to be about 1 second for my imagined user) so I tried to do a &#39;select * from ways&#39; query in psql with \timing enabled. It took 3 seconds to respond. When I did &#39;select name, length, x1, y1, x2, y2 from ways&#39; (that is all needed to build a graph in my opinion) it took even more - 4 seconds to respond.<br>


<br>Based on that, I assume that pgRouting&#39;s SQL queries are somehow optimized. <br><br>The questions:<br>1. Is it possible to improve the speed of pgRouting queries?<br></blockquote><div><br></div><div>The bottleneck is the number of ways you select from the table. </div>

<div>You can improve your speed by selecting less road links.</div><div>Anything else (like routing algorithms for example) might affect calculation time, but this is only very little compared to the data volume to load.</div>

<div><br></div><div>One thing you could check is how your way ID&#39;s look like. Lower ID&#39;s are better, so you may want to renumber them if there are large ID&#39;s and large gaps between them. You can create a new id attribute for that.</div>

<div><br></div><div>Daniel</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">2. How is the actual shortest path calculation done? Is it anything like the following:<br>


- Load the whole ways/edges table into memory with one &#39;select * from ways&#39;;<br>- Build a graph from that;<br>- Apply a C-based shortest path algorithm to the graph;<br>- Return a result into psql server?<br><br>

<br>
Can any of these steps be improved anyhow?<br><br>Thank you!<br>
<br>_______________________________________________<br>
Pgrouting-users mailing list<br>
<a href="mailto:Pgrouting-users@lists.osgeo.org">Pgrouting-users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-users" target="_blank">http://lists.osgeo.org/mailman/listinfo/pgrouting-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><span style="font-family:arial, sans-serif;font-size:13px;border-collapse:collapse">Georepublic UG &amp; Georepublic Japan<br>eMail: <a href="mailto:daniel.kastl@georepublic.de" style="color:rgb(66, 99, 171)" target="_blank">daniel.kastl@georepublic.de</a><br>

Web: <a href="http://georepublic.de/" style="color:rgb(66, 99, 171)" target="_blank">http://georepublic.de</a></span><br>