Re: Seeing foreign key lookups in explain output

From: Marti Raudsepp <marti(at)juffo(dot)org>
To: Vincent de Phily <vincent(dot)dephily(at)mobile-devices(dot)fr>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Seeing foreign key lookups in explain output
Date: 2011-09-20 13:32:50
Message-ID: CABRT9RCKFgzCNKSrSaOjcgT-c5eXV9agaNtXo=hn=ak1zncbSw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, Sep 20, 2011 at 16:12, Marti Raudsepp <marti(at)juffo(dot)org> wrote:
> On Tue, Sep 20, 2011 at 15:35, Vincent de Phily
> <vincent(dot)dephily(at)mobile-devices(dot)fr> wrote:
>> The explain output will tell me it's using the index on t1's id, but it tells
>> me nothing about the seqscan that happens on t2 (because I forgot to add an
>> index on t2.ref).
>
> +1 for a TODO on adding foreign key trigger time to EXPLAIN ANALYZE output.

Sorry, that was too hasty. We already have that now in 9.0 and 9.1
(not sure when it was introduced)

create table a as select generate_series(1,10000) i;
create table b as select generate_series(1,10000) i;
alter table a add primary key (i);
alter table b add foreign key (i) references a (i) on delete cascade;
explain analyze delete from a;

QUERY PLAN
-----------------------------------------------------------------------------------------------------------
Delete (cost=0.00..145.00 rows=10000 width=6) (actual
time=16.308..16.308 rows=0 loops=1)
-> Seq Scan on a (cost=0.00..145.00 rows=10000 width=6) (actual
time=0.008..2.208 rows=10000 loops=1)
Trigger for constraint b_i_fkey: time=6324.652 calls=10000
Total runtime: 6342.406 ms

Notice the line "Trigger for constraint b_i_fkey"

Regards,
Marti

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Marti Raudsepp 2011-09-20 13:51:12 Re: Transaction ordering on log-shipping standby
Previous Message Marti Raudsepp 2011-09-20 13:12:58 Re: Seeing foreign key lookups in explain output