Re: Adding a foreign key constraint is extremely slow - Mailing list pgsql-performance

From Bart Samwel
Subject Re: Adding a foreign key constraint is extremely slow
Date
Msg-id 3E81DEA3.7060305@liacs.nl
Whole thread Raw
In response to Re: Adding a foreign key constraint is extremely slow  (Greg Stark <gsstark@mit.edu>)
List pgsql-performance
Greg Stark wrote:
> bsamwel@xs4all.nl writes:
>
>
>>alter table triples add foreign key(id1) references wwwlog(id);
>>
>>PostgreSQL starts doing heavy work for at least one and a half hour, and I
>>broke it off at that. It is not possible to "explain" a statement like
>>this! Probably what it does is that it will check the foreign key
>>constraint for every field in the table. This will make it completely
>>impossible to load my data, because:
>>
>>(2) I cannot set the foreign key constraints AFTER loading the 0.9 million
>>records because I've got no clue at all how long this operation is going
>>to take.
>
>
> Try adding an index on wwwlog(id) so that it can check the constraint without
> doing a full table scan for each value being checked.

AFAIK, because wwwlog(id) is the primary key, this index already exists
implicitly.  Still, 0.9 million separate index lookups are too slow for
my purposes, if for example it takes something as low as 1 ms per lookup
it will still take 900 seconds (= 15 minutes) to complete. As the
complete adding of the foreign key constraint took about an hour, that
would suggest an average of 4 ms per lookup, which suggests that the
index is, in fact, present. :)

Anyway, I've actually waited for the operation to complete. The problem
is out of my way for now.

Bart


--

Leiden Institute of Advanced Computer Science (http://www.liacs.nl)
E-mail: bsamwel@liacs.nl    Telephone: +31-71-5277037
Homepage: http://www.liacs.nl/~bsamwel
Opinions stated in this e-mail are mine and not necessarily my employer's.


pgsql-performance by date:

Previous
From: Greg Stark
Date:
Subject: Re: Adding a foreign key constraint is extremely slow
Next
From: Robert D Oden
Date:
Subject: max_fsm settings