<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">Hi List,</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">This is a "yeah, but why?" type of question. </div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">I'm testing an upgrade from</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Postgres 9.6 and PostGIS 2.3</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">to </div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Postgres 12.1 and PostGIS 3.0</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">One of our queries has gone from about 80 seconds to 30 seconds on the new releases, which is great, but I'm just trying to figure out why. I realize there are a host of different reasons why performance changes may result across different versions and servers, but just wondering if it's related to a specific performance enhancement in Postgres or PostGIS. Can't seem to find anything in the release notes that would explain it.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">I've narrowed down the improvement to the part of the larger query that issues an ST_ValueCount() against a large raster and then sums the results. I can replicate the improvement with this simpler query subset:</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">SELECT pvc.value, SUM(pvc.count) AS sum <br>FROM <br>     (SELECT (ST_ValueCount(cv.rast, 1)).* <br>        FROM calveg_whrtype_20m AS cv) AS pvc <br>GROUP BY pvc.value<br></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><a href="https://explain.depesz.com/s/W8HN">9.6 plan</a></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><a href="https://explain.depesz.com/s/lIRS">12.0 plan</a></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Anything jump out as the reason for the improved plan in terms of changes to Postgres or PostGIS? Something to do with the HashAggregate it seems, but not sure why. And yes, this may have nothing to do with PostGIS per se, so feel free to point me over to the Postgres Performance list, if so. Just thought I'd start here since the raster function is involved. </div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Thanks much!</div><div class="gmail_default" style="font-family:tahoma,sans-serif">Shira</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div><br></div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div><br></div></div>
<div style="padding-top:8px">
         <br></div></div></div></div></div></div>