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)
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 |