Re: Building multiple indexes on one table.

From: Claudio Freire <klaussfreire(at)gmail(dot)com>
To: Chris Ruprecht <chris(at)cdrbill(dot)com>
Cc: "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Building multiple indexes on one table.
Date: 2014-07-17 23:21:42
Message-ID: CAGTBQpZUJwhmQJVswdpUG44szQdiSf2a0ECgJGej18_mOKXmWQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Thu, Jul 17, 2014 at 7:47 PM, Chris Ruprecht <chris(at)cdrbill(dot)com> wrote:
> Is there any way that I can build multiple indexes on one table without having to scan the table multiple times? For small tables, that's probably not an issue, but if I have a 500 GB table that I need to create 6 indexes on, I don't want to read that table 6 times.
> Nothing I could find in the manual other than reindex, but that's not helping, since it only rebuilds indexes that are already there and I don't know if that reads the table once or multiple times. If I could create indexes inactive and then run reindex, which then reads the table once, I would have a solution. But that doesn't seem to exist either.

Just build them with separate but concurrent connections, and the
scans will be synchronized so it will be only one.

Btw, reindex rebuilds one index at a time, so what I do is issue
separate reindex for each index in parallel, to avoid the repeated
scans as well.

Just make sure you've got the I/O and CPU capacity for it (you'll be
writing many indexes at once, so there is a lot of I/O).

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Benjamin Dugast 2014-07-18 10:52:39 Blocking every 20 sec while mass copying.
Previous Message Chris Ruprecht 2014-07-17 22:47:58 Building multiple indexes on one table.