Using unique btree indexes for pathkeys with one extra column

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Using unique btree indexes for pathkeys with one extra column
Date: 2019-07-15 00:58:42
Message-ID: CA+hUKGKiALY1Ux57hrxn8qiZFRUerS8tR9qAdMMpoV7=eVQ6AA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

In the category "doing more tricks with our existing btrees", which
includes all that difficult stuff like skip scans and incremental
sort, here's an easier planner-only one: if you have a unique index
on (a) possibly "including" (b) and you have a pathkey (a, b), you can
use an index [only] scan. That is, if the index is unique, and you
want exactly one extra column in index order, then you don't need any
extra sorting to get (a, b) in order. (If the index is not unique, or
there is more than one extra trailing column in the pathkey, you need
the incremental sort patch[1] to use this index). This was brought to
my attention by a guru from a different RDBMS complaining about stupid
stuff that PostgreSQL does and I was triggered to write this message
as a kind of TODO note...

[1] https://commitfest.postgresql.org/24/1124/

--
Thomas Munro
https://enterprisedb.com

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tomas Vondra 2019-07-15 01:34:25 Re: [sqlsmith] Crash in mcv_get_match_bitmap
Previous Message Thomas Munro 2019-07-14 23:46:14 Re: Change ereport level for QueuePartitionConstraintValidation