[postgis-users] ST_Overlaps and performance

DrYSG ygutfreund at draper.com
Wed Mar 7 09:26:27 PST 2012

I have a table with 21 Million Rows. The Geometry field is a simple
rectangular bounding box (Polygon with 4 corners).

Users will be doing executing queries to find all overlapping rows to a user
supplied rectangle. I have been finding that my naive query of:

FROM portal.metadata as cat
WHERE ST_Overlaps(cat.location,ST_GeomFromText('POLYGON((-70.9433962
41.5384615,-72.5283019 41.5384615,-72.5283019 41.1538462,-70.9433962
41.1538462,-70.9433962 41.5384615))', 4326));

Can take up to 40 seconds on a cold location. However, an ST_Contains query
of a point is only about 8 seconds. Yes, location is indexed using GIST. 

CREATE INDEX catalog_location_idx
  ON portal.catalog
  USING gist
  (location );

Now, it first stuck me as odd that it was taking more than 4 times the point
query to discover overlap. Then I thought about it, and I can see cases
where there ST_Overlaps cannot assume certain geometries.

I am now considering doing a WHERE clause that checks for ST_Contains for
both the Top-Left and Bottom-Right corners of the QueryRectangle since I
know that all bboxes in the DB are rectangular.

But I thought I would see what those with knowledge of the internals of the
spatial functions have to say.


View this message in context: http://postgis.17.n6.nabble.com/ST-Overlaps-and-performance-tp4555465p4555465.html
Sent from the PostGIS - User mailing list archive at Nabble.com.

More information about the postgis-users mailing list