Re: Why the planner is not using the INDEX .

Поиск
Список
Период
Сортировка
От David Gagnon
Тема Re: Why the planner is not using the INDEX .
Дата
Msg-id 42CAC937.4080702@siunik.com
обсуждение исходный текст
Ответ на Re: Why the planner is not using the INDEX .  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Why the planner is not using the INDEX .  (Enrico Weigelt <weigelt@metux.de>)
Список pgsql-performance
Tom Lane wrote:

>David Gagnon <dgagnon@siunik.com> writes:
>
>
>> explain analyse SELECT IRNUM FROM IR
>>        INNER JOIN IT ON  IT.ITIRNUM = ANY ('{1000, 2000}') AND
>>IT.ITYPNUM = 'M' AND IR.IRYPNUM = IT.ITYPNUM AND IR.IRNUM = IT.ITIRNUM
>>        WHERE IRNUM = ANY ('{1000, 2000}') and IRYPNUM = 'M'
>>
>>
>
>Those =ANY constructs are not currently optimizable at all.  You might
>get better results with "IT.ITIRNUM IN (1000, 2000)" etc.
>
>            regards, tom lane
>
>
>
I already tried this construct.  But the statement comes from a stored
procedure where the {1000, 2000} is an array variable (requestIds).  I
tried to use

IT.ITIRNUM IN (requestIds) or several other variant without success.

Is there a way to make it work?  Here is the statement the statement from the store procedure.  Remenber requestIds is
anarray of int. 


FOR inventoryTransaction IN
        SELECT DISTINCT IRNUM, IRAENUM, IRSTATUT, IRSENS, IRSOURCE,
IRDATE, IRQTE
        FROM IR
        WHERE IRNUM = ANY (requestIds) and IRYPNUM = companyId
    LOOP

Thank for your help !!!!
/David

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Heavy virtual memory usage on production system
Следующее
От: Josh Berkus
Дата:
Сообщение: Re: Planner constants for RAM resident databases