BUG #1797: Problem using Limit in a function, seqscan

Lists: pgsql-bugspgsql-performance
From: "Magno Leite" <magnomilk(at)yahoo(dot)com(dot)br>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #1797: Problem using Limit in a function, seqscan
Date: 2005-07-29 12:52:45
Message-ID: 20050729125245.1166CF0B14@svr2.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs pgsql-performance


The following bug has been logged online:

Bug reference: 1797
Logged by: Magno Leite
Email address: magnomilk(at)yahoo(dot)com(dot)br
PostgreSQL version: 8.0
Operating system: Windows XP Professional Edition
Description: Problem using Limit in a function, seqscan
Details:

I looked for about this problem in BUG REPORT but I can't find. This is my
problem, when I try to use limit in a function, the Postgre doesn't use my
index, then it use sequencial scan. What is the problem ?


From: Michael Fuhr <mike(at)fuhr(dot)org>
To: Magno Leite <magnomilk(at)yahoo(dot)com(dot)br>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #1797: Problem using Limit in a function, seqscan
Date: 2005-07-29 14:00:38
Message-ID: 20050729140038.GA83653@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs pgsql-performance

On Fri, Jul 29, 2005 at 01:52:45PM +0100, Magno Leite wrote:
> I looked for about this problem in BUG REPORT but I can't find. This is my
> problem, when I try to use limit in a function, the Postgre doesn't use my
> index, then it use sequencial scan. What is the problem ?

Without more information we can only guess, but if you're using
PL/pgSQL then a cached query plan might be responsible. Here's an
excerpt from the PREPARE documentation:

In some situations, the query plan produced for a prepared
statement will be inferior to the query plan that would have
been chosen if the statement had been submitted and executed
normally. This is because when the statement is planned and
the planner attempts to determine the optimal query plan, the
actual values of any parameters specified in the statement are
unavailable. PostgreSQL collects statistics on the distribution
of data in the table, and can use constant values in a statement
to make guesses about the likely result of executing the
statement. Since this data is unavailable when planning prepared
statements with parameters, the chosen plan may be suboptimal.

If you'd like us to take a closer look, then please post a self-
contained example, i.e., all SQL statements that somebody could
load into an empty database to reproduce the behavior you're seeing.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/


From: Bruno Wolff III <bruno(at)wolff(dot)to>
To: Magno Leite <magnomilk(at)yahoo(dot)com(dot)br>
Cc: pgsql-bugs(at)postgresql(dot)org, pgsql-performance(at)postgresql(dot)org
Subject: Re: BUG #1797: Problem using Limit in a function, seqscan
Date: 2005-07-29 14:06:42
Message-ID: 20050729140642.GA23650@wolff.to
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs pgsql-performance

On Fri, Jul 29, 2005 at 13:52:45 +0100,
Magno Leite <magnomilk(at)yahoo(dot)com(dot)br> wrote:
>
> Description: Problem using Limit in a function, seqscan
>
> I looked for about this problem in BUG REPORT but I can't find. This is my
> problem, when I try to use limit in a function, the Postgre doesn't use my
> index, then it use sequencial scan. What is the problem ?

You haven't described the problem well enough to allow us to help you and
you posted it to the wrong list. This should be discussed on the performance
list, not the bug list.

It would help if you showed us the query you are running and run it outside
of the function with EXPLAIN ANALYSE and show us that output. Depending
on what that output shows, we may ask you other questions.