Re: IN list processing performance (yet again)

Dave Tenny <tenny@attbi.com>

From: Dave Tenny <tenny@attbi.com>
To: Mario Weilguni <mweilguni@sime.com>
Cc: pgsql-performance@postgresql.org
Date: 2003-05-28T18:17:21Z
Lists: pgsql-performance
Mario Weilguni wrote:

>>My application relies heavily on IN lists.  The lists are primarily
>>constant integers, so queries look like:
>>
>>SELECT val FROM table WHERE id IN (43, 49, 1001, 100002, ...)
>>
>>Performance is critical, and the size of these lists depends a lot on
>>how the larger 3-tier applicaiton is used,
>>but it wouldn't be out of the question to retrieve 3000-10000 items.
>>
>>PostgreSQL 7.3.2 seems to have a lot of trouble with large lists.
>>    
>>
>
>you should rewrite your query if the query is created from an applition:
>
>SELECT val
>   FROM table
> WHERE id between 43 and 100002
>       AND id IN (43, 49, 1001, 100002, ...)
>
>where 43 is the min and 100002 the max of all values.
>
>I had this case with postgresql 7.2 and the planner made much smarter
>choices in my case.
>
>Regards,
>    Mario Weilguni
>  
>
Very interesting!  I tried it out, but it didn't appreciably change the 
thresholds in my results for going by for IN list
sizes 100 - 1000.  It's also likely to be of use only if the range for 
the between is fairly restricted,
which isn't necessarily characteristic of my data.

Dave