Re: Query plans not identical for `id in(1,2,3)` and `(id=1 or id=2 or id=3)`

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Ilya Basin <basinilya(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Query plans not identical for `id in(1,2,3)` and `(id=1 or id=2 or id=3)`
Date: 2024-03-10 11:51:31
Message-ID: 6da830f74343b343b17f020b82570d2e67de8b65.camel@cybertec.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Sat, 2024-03-09 at 23:08 +0400, Ilya Basin wrote:
> I have a list of bigint keys and I need to retrieve rows by these keys.
> Normally, I would split this list into pages of size 900 and perform
> several `SELECT ... WHERE key in($1,$2,...)`. However, the proprietary
> ORM we use can only produce this SQL:
> `SELECT ... WHERE (key=$1 or key=$2 or ...)`.
> Surprisingly, PostgreSQL planner treats these two SQLs differently:
>
> Is it possible to configure PostgreSQL 12.16 to treat the second query as the first?

No, that is currently not possible.

Yours,
Laurenz Albe

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Thomas Kellerer 2024-03-10 11:58:25 Re: Query plans not identical for `id in(1,2,3)` and `(id=1 or id=2 or id=3)`
Previous Message Rob Sargent 2024-03-10 00:18:07 Re: Insert with Jsonb column hangs