BitmapOr node not used in plan for ANY/IN but is for sequence of ORs ...

From: Jim Vanns <jvanns(at)ilm(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: BitmapOr node not used in plan for ANY/IN but is for sequence of ORs ...
Date: 2024-11-12 12:43:26
Message-ID: CAH7vdhO_JPN33FVMi_NaHs-YgSh6FHmORtncPtjjq7QcJVV=tw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

In PG16.4, we have a table of key/pair data (around 30M rows) where there
are about 7 distinct keys and each has a conditional or partial index on
them (the distribution is different for each key/value pair combination).
I've found that when we have a query that uses an OR then those partial
indexes are used but not if the query is written to use ANY/IN, which is
more convenient from a programmer POV (especially any with 3rd party query
generators etc.). Naturally, the result sets returned by the queries are
identical due to the filter semantics of any of the 3 solution variants.

Here's a shareable, MRP;

https://dbfiddle.uk/OKs_7HWv

Is there any trick I can do to get the planner to make use of the
conditional/partial index? Or is this simply an unoptimised code path yet
to be exploited!?

Cheers,

Jim

--
Jim Vanns
Principal Production Engineer
Industrial Light & Magic, London

Browse pgsql-general by date

  From Date Subject
Next Message Ron Johnson 2024-11-12 14:16:54 Re: PostgreSQL logical replication
Previous Message Jayadevan M 2024-11-12 10:46:21 PostgreSQL logical replication