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

Jo winfixit at gmail.com
Fri May 3 03:31:42 PDT 2013


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.

Maybe indexes on the ST_Centroid functions would help?

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

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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20130503/8eac13f1/attachment.html>


More information about the postgis-users mailing list