|
Select ... where ... in () - как перехитрить парсер?
|
|||
---|---|---|---|
#18+
Приветствую! Нужно делать выборку по заданному извне списку идентификаторов. Эксперименты показывают, что с литералами в in все работает гораздо быстрее по сравнению с закачкой списка во временную таблицу. Но смущает, что "одноразовые" запросы будут засирать кэш. Нет ли в Postgres какого-то магического хинта для непомещения запроса в кэш? Поиск не помог. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 17:56 |
|
Select ... where ... in () - как перехитрить парсер?
|
|||
---|---|---|---|
#18+
Соколинский Борис Но смущает, что "одноразовые" запросы будут засирать кэш. Это не так. Кеш запросов в постгресе возможен только в рамках сессии и только если запросы туда явно поместить ( prepare ). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 18:07 |
|
Select ... where ... in () - как перехитрить парсер?
|
|||
---|---|---|---|
#18+
1. IMHO Как-то динамически генерируемы список литералов в in в любом случае выглядит гуано-кодом Нагрузка на парсер, не возможность сделать PreparedStatement и так далее 2. Вроде, оператор ANY позволяет указывает внутри себя не subquery, а и просто Array. Возможно с IN это так же может получится. Т.ч. вместо списка литералов, наверное можно использовать: SELECT..... WHERE field = ANY( ? ) где ? просто array который биндится с клиента Ну или через unnest Точно не знаю, не проверял, но лично я бы попытался в эту сторону покопать https://www.postgresqltutorial.com/postgresql-array/ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 18:17 |
|
Select ... where ... in () - как перехитрить парсер?
|
|||
---|---|---|---|
#18+
Соколинский Борис Приветствую! Нужно делать выборку по заданному извне списку идентификаторов. Эксперименты показывают, что с литералами в in все работает гораздо быстрее по сравнению с закачкой списка во временную таблицу. Но смущает, что "одноразовые" запросы будут засирать кэш. Нет ли в Postgres какого-то магического хинта для непомещения запроса в кэш? Поиск не помог. я бы начал с показа планов запросов с "Эксперименты показывают, что с литералами в in все работает гораздо быстрее по сравнению с закачкой списка во временную таблицу." причем с explain (analyze, costs, buffers, timing) два - никакого кеша запросов в базе нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 18:49 |
|
|
start [/forum/search_topic.php?author=Snoof&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
15ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 1563ms |
total: | 1792ms |
0 / 0 |