[postgis-users] How to improve query with repeated spatial join query

Alexandre Neto senhor.neto at gmail.com
Fri May 3 03:51:43 PDT 2013


Hi, thanks for your help.

On Fri, May 3, 2013 at 11:31 AM, Jo <winfixit at gmail.com> wrote:

> As far as I understand SQL, it's normal you repeat clauses. I'm pretty
> sure the optimizer takes care of that and they are not actually executed
> more than once.
>

Using EXPLAIN, it says that it will repeat the a Nested Loop to check the
ST_CONTAIN


>
> Maybe indexes on the ST_Centroid functions would help?
>

For that, do Ihave to "materialize" the point geometry in my table, and
create a index?


>
> Where do g.geom and f.geom come from?
>

My mistake, I tried to adapt the query a bit to make it more obvious here,
and forgot those two.  It should be ST_CONTAIN(p.geom, ST_CENTROID(b.geom))


> Jo
>
>
>
> 2013/5/3 Alexandre Neto <senhor.neto at gmail.com>
>
>> Hello all,
>>
>> My goal is to calculate for each building it's volume
>> percentage relatively to the total buildings volume inside the statistical
>> parcel he is in.
>>
>> I have written the SQL code below (that works), but I think it might be
>> improved, since I see repeated proceedings in it.
>>
>> I would greatly appreciate if someone give me some advice about it.
>>
>> Thanks,
>>
>> Alexandre Neto
>>
>> -----------
>>
>> SELECT
>> b.gid,
>>  b.volume / t.total_volume as vol_per,
>> b.geom,
>> p.bgri11 as bgri11,
>> FROM
>> buildings as b,
>> stat_parcels as p,
>> (SELECT
>>  sum(b.volume) as total_volume,
>> p.bgri11 as bgri11
>> FROM
>>  buildings as b,
>> stat_parcels as p
>> WHERE
>>  ST_CONTAINS(p.geom, St_centroid(b.geom))
>> GROUP BY
>> p.bgri11) as t
>> WHERE
>> ST_CONTAINS(g.geom, St_centroid(f.geom))
>> AND p.bgri11 = t.bgri11;
>>
>>
>> My tables look like this:
>>
>> CREATE TABLE buildings
>>   gid serial NOT NULL,
>>   volume double precision,
>>   geom geometry(MultiPolygon,27493),
>>   CONSTRAINT edificios_habitacao_pkey PRIMARY KEY (gid);
>>
>> CREATE TABLE stat_parcels
>>   gid serial NOT NULL,
>>   bgri11 character varying(11),
>>   geom geometry(MultiPolygon,27493),
>>   CONSTRAINT bgri11_cascais_pkey PRIMARY KEY (gid)
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org
>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20130503/f51caccb/attachment.html>


More information about the postgis-users mailing list