Trigger function, bad performance

From: "Rogatzki Rainer" <rainer(dot)rogatzki(at)ggrz-hagen(dot)nrw(dot)de>
To: <pgsql-performance(at)postgresql(dot)org>
Subject: Trigger function, bad performance
Date: 2008-12-04 13:32:44
Message-ID: 595F977C01388944A4B5158975BB676385ABFD@sgzhmailbox.ggrz-hagen.nrw.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Hello,

I'm having problems with the following bad performing select-statement
in a trigger-function (on update before):

...
for c in
select id_country, sum(cost) as sum_cost
from costs
where id_user = p_id_user
and id_state = 1
and date(request) between p_begin and p_until
group by id_country;
loop
...
end loop;
...

Explain shows that the following existing partial index isn't used:

CREATE INDEX ix_costs_user_state_date_0701
ON costs
USING btree(id_user, id_state, date(request))
WHERE id_state = 1 AND date(request) >= '2007-01-01'::date AND
date(request) <= '2007-01-31'::date;

The funny thing is, that while executing the statement with type-casted
string-literals the index is used as expected:

...
for c in
select id_country, sum(cost) as sum_cost
from costs
where id_user = p_id_user
and id_state = 1
and date(request) between '2007-01-01'::date AND '2007-01-31'::date
group by id_country;
loop
...
end loop;
...

Any ideas?

Best regards

Rainer Rogatzki (mailto:rainer(dot)rogatzki(at)ggrz-hagen(dot)nrw(dot)de)

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Franck Routier 2008-12-04 14:08:35 pg_restore : out of memory
Previous Message Matthew Wakeling 2008-12-04 13:06:34 Re: Postgres using more memory than it should