[postgis-users] improving within()

Suhr, Ralf Ralf.Suhr at itc-halle.de
Mon Jun 29 09:12:26 PDT 2009


What kind of SQL do you use?

without index scan:
SELECT point
FROM point_table
WHERE ST_Within(point, (SELECT ST_Buffer(line,5km) FROM line_table));

OR with index scan:
SELECT point
FROM point_table p
  RIGHT JOIN
  (
    SELECT ST_Buffer(line,5km)
    FROM line_table
  ) AS b ON (ST_Within(p.way,b.way));

-- 
Ralf Suhr

IT-Consult Halle GmbH
Bornknechstraße 5
06108 Halle (Saale)

-----Ursprüngliche Nachricht-----
Von: postgis-users-bounces at postgis.refractions.net [mailto:postgis-users-bounces at postgis.refractions.net] Im Auftrag von Marco Lechner - FOSSGIS e.V.
Gesendet: Montag, 29. Juni 2009 17:47
An: PostGIS Users Discussion
Betreff: [postgis-users] improving within()


hi list,

we are using within(geometry, geometry) to test if some (~1200) points are within a polygon. the polygon is defined as buffer(linegeometry, dist). the problem is, that the line is always the same and therefore the result of buffer(linegeometry, dist)  is always the same. while iterating through the points the within() calculates the
buffer(linegeometry) each time again. the function takes 40s. instead of 0.04s if i calculate the buffergeometry first and use it as "fixed geometry" at within() - is this somehow improvable (within() recognizing such a behaviour?, ...)?

Marco
_______________________________________________
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