|
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/topic.php?fid=53&gotonew=1&tid=1994562]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 284ms |
total: | 435ms |
0 / 0 |