Re: Important speed difference between a query and a

From: Frederic Jolliton <fred-pg(at)jolliton(dot)com>
To: <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Important speed difference between a query and a
Date: 2003-04-24 16:41:49
Message-ID: 868ytzsv8y.fsf@mau.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance


> On Thu, 24 Apr 2003, Frederic Jolliton wrote:
>> > CREATE FUNCTION get_info (integer) RETURNS SETOF type_get_info
>> > AS '...' <- here the query show below, where 'LIMIT $1' is used instead of 'LIMIT 10'
>> > LANGUAGE sql;
>>
>> Setting enable_seqscan to off give same result speed between the query
>> and the function !
>>
>> So, the query in the function is not using index but the exact same
>> query alone does !
>>
>> Is there an explanation ?

Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com> writes:
> My guess is that limit $1 is assuming a larger number of rows when
> planning the queries, large enough that it expects seqscan to be
> better (assuming the limit is what it expects). It's probably not
> going to plan that query each time the function is called so it's
> not going to know whether you're calling with a small number (index
> scan may be better) or a large number (seq scan may be better). For
> example, if you sent 100000, the index scan might be a loser.
>
> Perhaps plpgsql with EXECUTE would work better for that, although
> it's likely to have some general overhead.

The server is rather fast, and the query return 10 to 50 rows in most
case. So, this is probably a solution, even if it's not very
clean. (Well, I have to find an example to RETURN the result of
EXECUTE..)

But, what I don't understand is why enable_seqscan change something if
the query is already planed.

--
Frédéric Jolliton

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Stephan Szabo 2003-04-24 17:28:08 Re: Important speed difference between a query and a
Previous Message Frederic Jolliton 2003-04-24 16:33:35 Re: Important speed difference between a query and a