[postgis-users] Spatial query help

Paul Ramsey pramsey at refractions.net
Fri Aug 3 11:46:12 PDT 2007


Query looks perfectly look to me. (You might use = instead of LIKE, but 
that won't change your performance in this case.)

Your statistics look odd, you might run "ANALYZE" and then use EXPLAIN 
ANALYZE to generate a query plan with both estimated and real time 
measurements.  But regardless, the plan you got here doesn't look too bad.

Looks like you have hit exactly the same "testing many small things 
within one large thing" performance issue that everyone seems to be 
having these last couple months.

http://geotips.blogspot.com/2007/06/performance-and-contains.html

Our first approximation at a performance boost for that is just getting 
into internal test land now, so hopefully we'll have something suitable 
for bleeding edge users in a month or so.

P.

Stephen Crawford wrote:
> I'm trying to write an efficient spatial query between two table that in
> effect says "give me all the features from table 1 that intsersect the
> selected features from table 2".  The following query works but takes about
> 50 seconds.  Both table have a gist index.  The "blm_lands" table is fairly
> high-resolution, and the selection for "ANCHORAGE" includes many islands. 
> 
> Is the query below the best way to do it?  I have also included the query
> plan.
> 
> Thanks,
> Steve
> 
> Stephen Crawford
> Center for Environmental Informatics
> The Pennsylvania State University
> 
> 
> SELECT DISTINCT(m.mlra_name) AS name, m.mlra_reg_s AS mlra_id FROM mlra AS
> m, blm_lands_best AS o
> 	WHERE m.the_geom && o.the_geom
> 	AND intersects(m.the_geom,o.the_geom)
> 	AND o.district LIKE 'ANCHORAGE';
> 	
> 	
> QUERY PLAN                                            
> ----------------------------------------------------------------------------
> ----------------------
>  Unique  (cost=17.21..17.22 rows=1 width=26)
>    ->  Sort  (cost=17.21..17.21 rows=1 width=26)
>          Sort Key: m.mlra_name, m.mlra_reg_s
>          ->  Nested Loop  (cost=0.00..17.20 rows=1 width=26)
>                Join Filter: intersects("inner".the_geom, "outer".the_geom)
>                ->  Seq Scan on blm_lands_best o  (cost=0.00..7.61 rows=2
> width=77)
>                      Filter: ((district)::text ~~ 'ANCHORAGE'::text)
>                ->  Index Scan using mlra_gist_index on mlra m
> (cost=0.00..4.78 rows=1 width=114)
>                      Index Cond: (m.the_geom && "outer".the_geom)
>                      Filter: (m.the_geom && "outer".the_geom)
> 
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users


-- 

   Paul Ramsey
   Refractions Research
   http://www.refractions.net
   pramsey at refractions.net
   Phone: 250-383-3022
   Cell: 250-885-0632



More information about the postgis-users mailing list