Performance of IN (...) vs. = ANY array[...] - Mailing list pgsql-performance

From Benjamin Minshall
Subject Performance of IN (...) vs. = ANY array[...]
Date
Msg-id 450AFB07.5050600@intellicon.biz
Whole thread Raw
Responses Re: Performance of IN (...) vs. = ANY array[...]  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-performance
Greetings:

I'm running 8.1.4, and have noticed major differences in execution time
for plpgsql functions running queries that differ only in use of an
array such as:


slower_function( vals integer[] )
    [query] WHERE id = ANY vals;


faster_function( vals integer[] )
    vals_text := array_to_string( vals, ',' )
    EXECUTE '[query] WHERE id IN (' || vals_text || ')';


In general, there are about 10 integers in the lookup set on average and
50 max.

What are the advantages or disadvantages of using arrays in this
situation?  The = ANY array method makes plpgsql development cleaner,
but seems to really lack performance in certain cases.  What do you
recommend as the preferred method?

Thanks for your comments.

--
Benjamin Minshall <minshall@intellicon.biz>
Senior Developer -- Intellicon, Inc.
http://www.intellicon.biz

Attachment

pgsql-performance by date:

Previous
From: "Bucky Jordan"
Date:
Subject: Re: RAID 0 not as fast as expected
Next
From: Tom Lane
Date:
Subject: Re: Performance of IN (...) vs. = ANY array[...]