From: | Nico Williams <nico(at)cryptonector(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Tomasz Ostrowski <tometzky+pg(at)ato(dot)waw(dot)pl>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>, Jesper Pedersen <jesper(dot)pedersen(at)redhat(dot)com> |
Subject: | Re: Multicolumn hash indexes |
Date: | 2017-09-29 19:50:37 |
Message-ID: | 20170929195036.GE1251@localhost |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Fri, Sep 29, 2017 at 10:54:55AM -0400, Tom Lane wrote:
> There are few if any indexing techniques where the first column isn't
> significantly more important than the rest --- certainly that's true
> for btree, for example. I do not think it's a showstopper if that's
> true for hash as well.
You have N>1 columns to index and which you'll be using a conjunction of
all of them together in queries, with equiality predicates. No one of
those columns is sufficiently selective. But all the columns together
are plenty selective enough.
Obviously a [multi-column] hash index should do. The main question is
whether the planner can be made to not consider subsets of the columns
to the exclusion of the hash index -- maybe not, or not easily enough.
This is easy enough to implement with a B-Tree index on an expression
consisting of a decent hash function application to the row_to_json() of
a row composed of the columns in question. But it requires using the
same expression in queries, naturally, which then acts as a barrier to
the planner's propensity to drop columns from consideration for index
selection.
A multi-column hash index facility shouldn't have to require anything
more than where clauses that are a conjunction of all the columns with
equality predicates.
Nico
--
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2017-09-29 19:53:02 | Re: UPDATE of partition key |
Previous Message | Schneider | 2017-09-29 19:20:52 | Re: [HACKERS] User-perspective knowledge about wait events |