Performance of IN (...) vs. = ANY array[...]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>
Senior Developer -- Intellicon, Inc.
http://www.intellicon.biz

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux