Re: How bad is using queries with thousands of values for operators IN or ANY?
В списке pgsql-general по дате отправления:
| От | Thomas Kellerer |
|---|---|
| Тема | Re: How bad is using queries with thousands of values for operators IN or ANY? |
| Дата | |
| Msg-id | 699b4b9a-e67f-4823-dcc6-1be2a61ef217@gmx.net обсуждение исходный текст |
| Ответ на | Re: How bad is using queries with thousands of values for operators IN or ANY? (Thorsten Schöning <tschoening@am-soft.de>) |
| Ответы |
Re: How bad is using queries with thousands of values for operators IN or ANY?
|
| Список | pgsql-general |
Thorsten Schöning schrieb am 31.08.2020 um 12:37:
> So for what query size or number of IDs to compare in IN would you
> consider a different approach at all?
In my experience "hundreds" of IDs tend to be quite slow if used with an IN clause.
Rewriting the IN to a JOIN against a VALUES clause is very often faster:
So instead of:
select *
from t
where id in (1,2,3, .... ,500);
using this:
select *
from t
join (
values (1),(2),(3),...(500)
) as x(id) on x.id = t.id
produces more often than not a more efficient execution plan (assuming no values are duplicated in the IN list)
Obviously I don't know if such a re-write is even feasible though.
Thomas
В списке pgsql-general по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера