Re: maximum number of expressions in a list is 1000

From: Sayan Malakshinov <xt.and.r_at_gmail.com>
Date: Thu, 3 Jan 2013 19:28:48 +0400
Message-ID: <CAOVevU7fHEnRYkZN+WsmePHt5BSgD7B5=woGcUK2w0FXRZjeew_at_mail.gmail.com>



Michael,

Why do you think that it is because if "IN (...) OR IN (...)"? imho in your case root of the problem is a plan, not syntax. Could you show good and bad plans?
My point is that a gtt is not very different from "in list". For example, nested loop with gtt is like "in list iterator", and "filter" access with list is not worse than hash/merge join.

On Thu, Jan 3, 2013 at 7:03 PM, Michael Dinh <mdinh235_at_gmail.com> wrote:
> Just my 2 cents.
>
> We have developers that are doing the exact same thing. To circumvent
> Oracle's limitation, they use IN (...) OR IN (...) and performance is really
> bad.
>
> Why not just create a temporary table?
>
> On Thu, Jan 3, 2013 at 3:42 AM, Sayan Malakshinov <xt.and.r_at_gmail.com>
> wrote:
>>
>> First of all, I want to say, that, although this is a simple solution
>> with minimal changes to the code, but still prefer to use other
>> options such as a collection binding or gtt(but don't forget about
>> cardinality).
>> About limitation: It is described here:
>> http://docs.oracle.com/cd/E14072_01/server.112/e10592/expressions015.htm
>> Quote from it:
>> "A comma-delimited list of expressions can contain no more than 1000
>> expressions. A comma-delimited list of sets of expressions can contain
>> any number of sets, but each set can contain no more than 1000
>> expressions."
>>
>>
>> --
>> Best regards,
>> Sayan Malakshinov
>> Senior performance tuning engineer
>> PSBank
>> Tel: +7 903 207-1576
>> --
>> http://www.freelists.org/webpage/oracle-l
>>
>>
>

-- 
Best regards,
Sayan Malakshinov
Senior performance tuning engineer
PSBank
Tel: +7 903 207-1576
--
http://www.freelists.org/webpage/oracle-l
Received on Thu Jan 03 2013 - 16:28:48 CET

Original text of this message