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: [email protected] 
[mailto:[email protected]] 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 [email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to