Re: SQL Functions and plan time

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: SQL Functions and plan time
Дата
Msg-id 200307081821.42685.dev@archonet.com
обсуждение исходный текст
Ответ на Re: SQL Functions and plan time  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: SQL Functions and plan time  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
On Tuesday 08 Jul 2003 4:33 pm, Tom Lane wrote:
> Richard Huxton <dev@archonet.com> writes:
> > So why am I getting substantially different times for identical queries
> > (except for parameter substitution)
> >
> > [41] LOG:  query: SELECT zzz2('2003-07-07 17:00:00+01','2003-07-07
> > 17:20:00+01');
> > [42-1] LOG:  query:
> > [42-2] DELETE FROM stats_telcon WHERE st_hour >= $1 AND st_hour < $2;
> > ...
> > [43] LOG:  duration: 7.524765 sec
> >
> > [44] LOG:  query: DELETE FROM stats_telcon WHERE st_hour>='2003-07-07
> > 17:00:00+01' AND st_hour<'2003-07-07 17:20:00+01';
> > [45] LOG:  duration: 0.032860 sec
>
> They're not the same query from the planner's viewpoint: one has
> constants from which it can infer the number of rows to be fetched,
> the other has only parameter symbols.
>
> My guess is that the parameterized query is getting stuck with a seqscan
> plan, but it's hard to be sure without more data.

That was my guess, but I couldn't think of a way to get an EXPLAIN out of the
function. I turned the plan debugging on for both but I'll need some free
time to format it up and figure out what's happening.

Can I ask why, since the plan is constructed at query-time the parameters
aren't substitued *before* planning?

--
  Richard Huxton

В списке pgsql-general по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: Stored Procedure Assistance
Следующее
От: Michael Pohl
Дата:
Сообщение: Re: Stored Procedure Assistance