Re: Functions too slow, even with iscachable? - Mailing list pgsql-sql

From Ang Chin Han
Subject Re: Functions too slow, even with iscachable?
Date
Msg-id 20000809145029.A5894@pintoo.com
Whole thread Raw
In response to Re: Functions too slow, even with iscachable?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
On Mon, Aug 07, 2000 at 10:58:27AM -0400, Tom Lane wrote:

> (I assume the lack of "survey_id =" here is just a cut-and-paste error?)

Yup. :)

> I think what you're getting bit by is that the optimizer doesn't
> recognize "var = function(param)" as being a potential indexscan clause.
> Does EXPLAIN show that the first query is producing an indexscan plan?

It did. I'll try to make up a reproducible test case, if you need
it.

> I have not tried it, but I think you could get around this problem in
> plpgsql, along the lines of
>     tmp1 = ticket2name($1);
>     tmp2 = ticket2survey_id($1);
>     SELECT passwd FROM ticket WHERE name = tmp1 AND survey_id = tmp2;
> since the tmp vars will look like params to the optimizer and "var = param"
> is indexable.

Yup, it did work. Thanks!

> Looks like we need to teach the optimizer that expressions involving
> params can be treated like simple params for the purposes of
> optimization.

That'll be good. Anything to speed up the stored procedures are good:
encourage people to put logic processing into the RDBMS where it should
be.


pgsql-sql by date:

Previous
From: Bernie Huang
Date:
Subject: Re: Changing user passwords
Next
From: Ang Chin Han
Date:
Subject: Aggregate functions, fast! (long)