Re: Decrease time needed to CREATE INDEX and FOREIGN KEY on newtable column which has all values NULL

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: Decrease time needed to CREATE INDEX and FOREIGN KEY on newtable column which has all values NULL
Дата
Msg-id 201901221647.kce4ahwfygur@alvherre.pgsql
обсуждение исходный текст
Ответ на Decrease time needed to CREATE INDEX and FOREIGN KEY on new tablecolumn which has all values NULL  (Denisa Cirstescu <Denisa.Cirstescu@tangoe.com>)
Список pgsql-general
On 2019-Jan-22, Denisa Cirstescu wrote:

> I am trying to add a new column to a really big table and to define an INDEX and a FOREIGN KEY on that new column
usingthe following instructions:
 
> 
> ALTER TABLE Employee ADD COLUMN DepartmentId INTEGER;
> CREATE INDEX IDX_Employee_DepartmentId ON Employee(DepartmentId);
> ALTER TABLE Employee ADD CONSTRAINT FK_Employee_Department FOREIGN KEY(DepartmentId) REFERENCES
Department(DepartmentId);
> 
> The table is huge and it takes a lot of time to add the INDEX and the FOREIGN KEY although all values are NULL.
> Considering that the new DepartmentId column is NULL for all rows at this point, is there a way to make the INDEX and
FOREIGNKEY creation run faster?
 

The typical advice is to run CREATE INDEX CONCURRENTLY instead of plain
CREATE INDEX.  Also, use "ADD CONSTRAINT ... NOT VALID;" instead, and
later do another ALTER TABLE ... VALIDATE CONSTRAINT.  That decreases
the impact considerably in production scenarios.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


В списке pgsql-general по дате отправления:

Предыдущее
От: Ravi Krishna
Дата:
Сообщение: Re: Decrease time needed to CREATE INDEX and FOREIGN KEY on new tablecolumn which has all values NULL
Следующее
От: Jeremy Finzel
Дата:
Сообщение: Re: PostgreSQL logical replication depends on WAL segments?