From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
---|---|
To: | Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>, Ivan Kush <ivan(dot)kush(at)tantorlabs(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Replace IN VALUES with ANY in WHERE clauses during optimization |
Date: | 2024-10-03 20:19:56 |
Message-ID: | e20ee75bb2713f6141e5ac1333a390d603b157e6.camel@cybertec.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, 2024-10-03 at 23:10 +0300, Alena Rybakina wrote:
> On 03.10.2024 22:52, Ivan Kush wrote:
> >
> > Hello, hackers! I with my friends propose the patch to replace IN
> > VALUES to ANY in WHERE clauses.
> >
> > # Intro
> >
> > The `VALUES` in the `IN VALUES` construct is replaced with with an
> > array of values when `VALUES` contains 1 column. In the end it will be
> > replaced with ANY by the existing function makeA_Expr
> > (src/backend/nodes/makefuncs.c)
> >
> > This improves performance, especially if the values are small.
>
> Anlrey Lepikhov and I recently described this in an article [0] here and
> the implementation already exists, but for now it was posted a binary
> application for testing. The acceleration is significant I agree.
>
> [0] https://danolivo.substack.com/p/7456653e-9716-4e91-ad09-83737784c665
I believe that the speed improvement is significant, but who writes a
query like
... WHERE col IN (VALUES (1), (2), (3))
when they could write the much shorter
... WHERE col IN (1, 2, 3)
which is already converted to "= ANY"?
I wonder if it is worth the extra planning time to detect and improve
such queries.
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2024-10-03 21:08:28 | Re: Replace IN VALUES with ANY in WHERE clauses during optimization |
Previous Message | Peter Geoghegan | 2024-10-03 20:15:30 | Re: POC, WIP: OR-clause support for indexes |