<div dir="ltr"><div class="gmail_default" style="font-family:monospace">In my "explain tests", made on much smaller tables, I get 500 times smaller costs only by changing LEFT JOIN to "regular" JOIN.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">pon., 27 mar 2023 o 01:07 Raj Talati <<a href="mailto:rajtalati@gmail.com">rajtalati@gmail.com</a>> napisał(a):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">I prefer doing insert instead of update if we doing all rows update :) so create New table with new table and copy from old and later drop it you can go without index and do index later after copy. Postgres update is delete and insert internally and direct big update will bloat table.</div><div dir="auto">Other thing you can do multi thread if you have 16 core with nothing else can go 12-14 threads updates which can do portion of your big table easy if no good criteria can be mod function on PK </div><div dir="auto"><br></div><div dir="auto">Hope this helps .</div><div dir="auto"><br></div><div dir="auto">Raj T</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 26, 2023 at 6:54 PM karsten <<a href="mailto:karsten@terragis.net" target="_blank">karsten@terragis.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>



<div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial">Hi 
All,</span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial"></span></font> </div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial">I have 
two tables,  a parcel (polygon) table and a building 
(polygon) table in a PostGIS db. <br>There are about 1 million parcels 
and over a million buildings in these tables ...</span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial">I have 
set gist indexes on both and clustered each on a geohash, pkey is set on 
objectid.<br></span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial">I 
would like to fill 2 additional columns for the parcels layer to have the number 
of building on each parcel (building_count) and the summed up area of 
all those building footprints (building_fp).</span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial">Below is an update query but it is 
extremely lengthy and inefficient (on a beefy 16 core Ubuntu server with 128 GB 
tons of RAM) : I had to stop an after running 3 days when it was not 
finished ...</span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial">I am 
wondering if anyone has an idea how to make it more efficient 
?</span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial"></span></font> </div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial">This 
is the query:</span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"><span style="font-family:Arial"></span></font> </div>
<div><font style="font-family:Arial;color:rgb(128,0,0)" size="2" face="Arial"><span style="font-family:Arial">UPDATE 
parcels p SET<br>building_count = subquery.num,<br>building_fp = 
subquery.sumarea<br>from<br>(select objectid, count(*) as num, 
sum(st_area(b.geom)) as sumarea FROM parcels p<br>left join buildings b on 
st_intersects(p.geom,st_centroid(b.geom)) group by objectid ) subquery<br>where 
p.objectid = subquery.objectid ;</span></font></div>
<div><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"></font> </div>
<div><span><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial">Any 
suggestions ?</font></span></div>
<div><span><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial"></font></span> </div>
<div><span><font style="font-family:Arial;color:rgb(0,0,128)" size="2" face="Arial">Cheers</font></span></div>
<div align="left">
<div><span style="font-size:11pt;font-family:Verdana,sans-serif">Karsten 
Vennemann<br></span></div></div></div>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@lists.osgeo.org" target="_blank">postgis-users@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/postgis-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/postgis-users</a><br>
</blockquote></div></div>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@lists.osgeo.org" target="_blank">postgis-users@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/postgis-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/postgis-users</a><br>
</blockquote></div>