| From: | "Jonathan Ellis" <jonathan(at)utahpython(dot)org> |
|---|---|
| To: | pgsql-performance(at)postgresql(dot)org |
| Subject: | Premature view materialization in 8.2? |
| Date: | 2007-04-05 18:46:08 |
| Message-ID: | e06563880704051146r357cb15by7e498c6d796b093a@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
I have a query hitting a view that takes 0.15s on 8.1 but 6s on 8.2.3:
select party_id from clan_members_v cm, clans c
where cm.clan_id = c.id
and c.type = 'standard'
The problem seems to be that clan_members_v contains a call to an
expensive function:
create or replace view clan_members_v as
select cm.clan_id, cm.user_id, cp.party_id, cm.date_accepted,
p.name as party_name, p_tp_total(p.id)::int as tp_total
from clan_members cm, clan_participants cp, parties p
where cm.user_id = p.user_id
and p.id = cp.party_id
;
p_tp_total takes around 50ms per row.
If I create clan_members_v without the function call, the original
query's speed goes to the 150ms range on 8.2 as well.
Is this a regression, or a "feature" of 8.2?
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Erik Jones | 2007-04-05 18:47:40 | Re: a question about Direct I/O and double buffering |
| Previous Message | Mark Lewis | 2007-04-05 18:27:09 | Re: a question about Direct I/O and double buffering |