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

Поиск
Список
Период
Сортировка
От Benjamin Minshall
Тема Performance of IN (...) vs. = ANY array[...]
Дата
Msg-id 450AFB07.5050600@intellicon.biz
обсуждение исходный текст
Ответы Re: Performance of IN (...) vs. = ANY array[...]  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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

Вложения

В списке pgsql-performance по дате отправления:

Предыдущее
От: "Bucky Jordan"
Дата:
Сообщение: Re: RAID 0 not as fast as expected
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Performance of IN (...) vs. = ANY array[...]