Re: Foreign Keys Constraints, perforamance analysis

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Daniel Åkerud <zilch@home.se>
Cc: "PostgreSQL-general" <pgsql-general@postgresql.org>
Date: 2001-06-23T21:40:10Z
Lists: pgsql-general
=?iso-8859-1?Q?Daniel_=C5kerud?= <zilch@home.se> writes:
>> ... Not surprising that it's much slower.  The real
>> question is what this scenario has to do with production activities.

> It has nothing to do with production activities. I just want to know how,
> and how much, Foreign Keys Constraints affect performance.

My point is that unless bulk delete is an operation you do a lot,
this measurement has little to do with everyday performance.  A more
reasonable test (I think) would be to time deletion of a *single* person
record --- and the associated implicit deletion of a small number of
dependent records --- against deletion of the same person record and
explicit deletion of the same number of dependent records.  That
actually has something to do with performance of real-world applications
that delete individual records.  As is, you are measuring (in effect)
	DELETE FROM married;
against
	FOR akey IN (SELECT key FROM married) DO
		DELETE FROM married WHERE key = akey;
and then blaming the speed difference on foreign keys.  It's got nothing
to do with foreign keys and everything to do with number of queries
issued.

			regards, tom lane