From: | Pena Kupen <kupen(at)wippies(dot)fi> |
---|---|
To: | pgsql-performance(at)postgresql(dot)org |
Subject: | Re: Custom function in where clause |
Date: | 2012-07-10 09:30:38 |
Message-ID: | 29875759.2181341912638615.JavaMail.kupen@wippies.fi |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
Hi and thank's guys!
First trying this Brendan's recommendation.
It seems only a small difference between sql and PL/pgSQL. from 40-->37. Not so good yet.
I will try Maxim's little later and you all know.
--
kupen
Brendan Jurd [direvus(at)gmail(dot)com] kirjoitti:
> On 10 July 2012 18:36, Pena Kupen <kupen(at)wippies(dot)fi> wrote:
> > Hi,
> >
> > I have searched solution to my problem a few days. On my query, there is big
> > performance problem.
> > It seems to me, that problem is on where-part of sql and it's function.
> >
>
> > How should I handle this situation and use function?
> >
>
> I would start by rewriting your function in plain SQL rather than
> PL/pgSQL. As a general rule, don't write a function in PL/pgSQL
> unless you really need procedurality. This function does not.
>
> For example:
>
> CREATE OR REPLACE FUNCTION get_level_value(_user integer, _id, _area)
> RETURNS integer
> AS $$
> -- Return 3 if there are matching records in table_o, otherwise return 1.
> SELECT CASE WHEN EXISTS (
> SELECT id
> FROM table_o
> WHERE userid=_user AND
> id=_id AND
> area=_area
> ) THEN 3 ELSE 1 END;
> $$
> LANGUAGE sql STABLE;
>
> Cheers,
> BJ
>
--
Wippies-vallankumous on täällä! Varmista paikkasi vallankumouksen eturintamassa ja liity Wippiesiin heti!
http://www.wippies.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Pena Kupen | 2012-07-10 10:20:06 | Fw: Re: Custom function in where clause |
Previous Message | Brendan Jurd | 2012-07-10 08:45:29 | Re: Custom function in where clause |