Re: alter table TBL add constraint TBL_FK foreign key ...

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Minghann Ho <Minghann(dot)Ho(at)mcs(dot)vuw(dot)ac(dot)nz>
Cc: <pgsql-performance(at)postgresql(dot)org>
Subject: Re: alter table TBL add constraint TBL_FK foreign key ...
Date: 2003-01-01 03:38:54
Message-ID: 20021231193351.U68640-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Wed, 1 Jan 2003, Minghann Ho wrote:

> I've experienced very slow performance to add foreign key constraints using
> ALTER TABLE ADD CONSTRAINT FOREIGN KEY ...
>
> After using COPY ... FROM to load the base tables, I started to build the
> referential integrity between tables.
> I have 3 tables: T1 (6 million records), T2 (1.5 million records) and T3 (0.8
> million records).
> One of the RI - foreign key (T1 -> T2) constraint took about 70 hrs to build.
> The other RI - foreign key (T1 -> T3) constraint took about 200 hrs and yet
> completed!! (compound foreign key)
>
> I tried to use small subset of the tables of T2 and T3 to do the testing.
> An estimation show that it need about 960 hrs to build the RI - foreign key
> constraints on table T1 -> T3 !!!

It's running the constraint check for each row in the foreign key table.
Rather than using a call to the function and a select for each row, it
could probably be done in a single select with a not exists subselect, but
that hasn't been done yet. There's also been talk about allowing some
mechanism to allow the avoidance of the create time check, but I don't
think any concensus was reached.

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Ron Johnson 2003-01-01 08:14:34 Re: alter table TBL add constraint TBL_FK foreign key
Previous Message Minghann Ho 2003-01-01 03:38:06 alter table TBL add constraint TBL_FK foreign key ... very slow