Re: Why the planner is not using the INDEX .

From: David Gagnon <dgagnon(at)siunik(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Why the planner is not using the INDEX .
Date: 2005-07-05 17:53:59
Message-ID: 42CAC937.4080702@siunik.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Tom Lane wrote:

>David Gagnon <dgagnon(at)siunik(dot)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 an array 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

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Josh Berkus 2005-07-05 21:33:28 Re: Planner constants for RAM resident databases
Previous Message Tom Lane 2005-07-05 16:55:16 Re: Heavy virtual memory usage on production system