Re: Why the planner is not using the INDEX . - Mailing list pgsql-performance

From David Gagnon
Subject Re: Why the planner is not using the INDEX .
Date
Msg-id 42CAC937.4080702@siunik.com
Whole thread Raw
In response to Re: Why the planner is not using the INDEX .  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Why the planner is not using the INDEX .
List 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 by date:

Previous
From: Tom Lane
Date:
Subject: Re: Heavy virtual memory usage on production system
Next
From: Josh Berkus
Date:
Subject: Re: Planner constants for RAM resident databases