Re: Postgres undeterministically uses a bad plan, how to convince it otherwise?

From: Ron <ronljohnsonjr(at)gmail(dot)com>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Postgres undeterministically uses a bad plan, how to convince it otherwise?
Date: 2023-02-16 16:15:50
Message-ID: 9641fdf1-a4d1-2fad-2400-794dcf7dc5cc@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 2/16/23 09:47, cen wrote:
> Hi,
>
> I am running the same application (identical codebase) as two separate
> instances to index (save) different sets of data. Both run PostgreSQL 13.
>
> The queries are the same but the content in actual databases is different.
> One database is around 1TB and the other around 300GB.
>
>
> There is a problem with a paginated select query with a join and an order.
> Depending on which column you order by (primary or FK) the query is either
> instant or takes minutes.
>
> So on one database, ordering by primary is instant but on the other it is
> slow and vice-versa. Switching the columns around on the slow case fixes
> the issue.
>
> All relavant colums are indexed.
>
>
> Simplified:
>
> Slow: SELECT * from table1 AS t1 LEFT JOIN table2 AS t2 ON t2.t1_id=t1.id
> ORDER BY t1.id ASC LIMIT 0, 10
>
> Fast: SELECT * from table1 AS t1 LEFT JOIN table2 AS t2 ON t2.t1_id=t1.id
> ORDER BY t2.t1_id ASC LIMIT 0, 10
>
> (and the opposite, on the other instance the first one is fast and second
> one is slow).

What does EXPLAIN ANALYZE say?

> I have run all the statistic recalculations but that doesn't help. As far
> as I could read the docs, there is no real way to affect the plan
>
> other than reworking the query (I've read about fencing?) which can't be
> done because it seems to be unpredictable and depends on actual data and
> data quantity.
>
> I haven't tried reindexing.

Since you've run ANALYZE, when were the tables last vacuumed?

--
Born in Arizona, moved to Babylonia.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2023-02-16 16:46:27 Re: DELETE trigger, direct or indirect?
Previous Message Erik Wienhold 2023-02-16 16:09:21 Re: DELETE trigger, direct or indirect?