On 23 Feb 2026, at 16:54, Andrei Lepikhov <lepihov@gmail.com> wrote:
On 23/2/26 10:41, Laurenz Albe wrote:
On Mon, 2026-02-23 at 10:37 +0100, Attila Soki wrote:
When upgrading from PostgreSQL 14.4, I noticed that one of my somewhat complex analytical queries sometimes gets an inefficient plan under PostgreSQL 16, 17, and 18. Under 14.4, the query runs with a stable plan and completes in 19 to 22 seconds. In newer versions, the plan seems to be unstable, sometimes the query completes in 17 to 20 seconds, sometimes it runs for 5 to 18 minutes with the inefficient plan. This also happens even if the data is not significantly changed.
This is very likely owing to a bad estimate. Could you turn on "track_io_timing" and send us the EXPLAIN (ANALYZE, BUFFERS) output for both the good and the bad plan?
Since PG16, the optimiser changed a lot. So, there are plenty of possibilities that might happen - table statistics update, for example. So, we need at least EXPLAIN ANALYSE for 'good' and 'bad' cases to begin a discussion.
In order to be able to publish the plans here, I have obfuscated the table and field names, but this is reversible, so I can provide more info if needed.