Что если написать функцию, которая будет возвращать множество курсоров? Грубо говоря внутри функции мы делаем несколько SELECT к абсолютно разным таблицам и все эти выборки будут возвращаться в виде курсоров. Так вообще делают?
Дополню мысль. Сейчас мой бекенд делает порядка 10-ти SELECT к БД. Идея в функцией позволит уменьшить кол-во обращений к БД.
А как вы с бекенда будете извлекать содержимое курсоров?
Не проще батчем просто слать запросы?
Мне казалось что функция вернёт все dataset на бекенд, а далее уже перебором... P.S. для работы с БД использую LibPQ
Батчем, это как? Типа объединить все запросы в один?
А загляните потом в tcpdump. Прям интересно что получится
Нет, слать все запросы не 10 пакетами, а одном
Никогда так не пробовал, но попробую сейчас
Попробовал. Выборка вернула данные из последнего запроса. Т.е. данные из table2 Отправлял запросы в таком виде: "SELECT * FROM table1; SELECT * FROM table2;"
Вы не то делаете, у вас физически должно быть 10 запросов а не один, но слать их надо все вместе загуглите как это в вашей либе делается
Возможно, вам стоит приглядется к pipeline mode из libpq. В библиотеке он появился в 14-й версии, но работает со всеми актуальными версиями PostgreSQL на сервере.
Обсуждают сегодня