[postgis-users] Postgis query slowing down with polygon bounds
Rob Young
bobbotron at gmail.com
Mon Jan 22 15:24:56 PST 2007
That did it. Thanks Mark!
On 1/23/07, Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk> wrote:
> On Tue, 2007-01-23 at 10:29 +1300, Rob Young wrote:
> > I developed a pL/pgsql function that creates a bounding box for
> > lat/long data. Given a latitude, long and distance in metres, it
> > returns a box that bounds a circle at that point with a radius equal
> > to the distance parameter. Here's an example:
> >
> > select AsText(expand_sphere( 5, 3, 600 * 1000 ));
> >
> > "POLYGON((8.41054153442383 -0.389891535043716,8.41054153442383
> > 10.3898906707764,-2.41054105758667 10.3898906707764,-2.41054105758667
> > -0.389891535043716,8.41054153442383 -0.389891535043716))"
> >
> > However, when I use this in a query (below) in my testing database,
> > it runs significantly slower than when I run the query without
> > bounding the data using expand_sphere.
> >
> >
> > select *, astext(point) from test
> > WHERE
> > point && expand_sphere( 5, 3, 600 * 1000 ) AND
> > distance_sphere( setsrid( makepoint( 3, 5 ), 4326 ), point ) < 600 * 1000;
> >
> >
> > This has me puzzled, any suggestions as to what I should change to
> > speed up this query? The table test has a one geometry column, point,
> > which contains point data. There is a GIST index on point, and I
> > anazlysed the database after adding the index.
> >
> > Also, if there's interest I would be happy to share my expand_sphere code.
> >
> > Regards
> > Robert Young :-)
>
>
> Hi Robert,
>
> Did you mark your expand_sphere() function as IMMUTABLE as part of its
> CREATE FUNCTION definition? If not, the PostgreSQL planner assumes that
> the function is VOLATILE and hence will not optimise the result as a
> constant.
>
> http://www.postgresql.org/docs/8.2/interactive/sql-createfunction.html
>
>
> Kind regards,
>
> Mark.
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
More information about the postgis-users
mailing list