Создание запроса с участием нескольких баз Postgres Pro

Видел похожий вопрос 2017года, но в связи с тем что вышло довольно много версий Postgres Pro возможно, что-то изменилось с этим положением дел. Итак вопрос: Есть ли сейчас в Postgres Pro механизм, который позволит делать запросы к локальным базам данных одного и того же сервера, без танцев с бубном, которые будут такими же производительными как в MSSQL? т.е. в одном запросе собираются с помощью join данные из нескольких баз данных и их таблиц.

Везде где я натыкался на такие запросы, говорилось о том что join из другой базы будет делаться очень долго, а так как сейчас планируется переезд с MSSQL на Postgres Pro, то возможно придётся менять структуру СУБД, так как очень много тяжёлых скриптов которые тянули данные из разных баз и соединяли воедино.

Если на текущий момент всё так же плачевно с производительностью, то кто как выходил из данной ситуации? У меня на ум приходит только создание нескольких схем баз данных, которые называть так как раньше назывались базы и в каждую из схем тянуть данные из базы соответствующей её названию.


Ответы (1 шт):

Автор решения: Ivan Chuzhmakov

В общем написал я в техническую поддержку Postgres Pro и они мне ответили что на данный момент в моём случае будет 2 оптимальных решения:

  1. Это использование расширения postgres_fdw и IMPORT FOREIGN SCHEMA с опциями LIMIT TO | EXCEPT, таким образом мы один раз импортируем структуру схемы внешней базы с таблицами которые будут использоваться в запросе, а далее будем использовать в запросах. Это вариант конечно неудобен, тянуть в базу полную структуру другой базы, особенно если там сотни таблиц и непонятно когда какая таблица понадобится и в каком запросе, кажется слишком избыточным решением.
  2. Использовать схемы вместо баз и перенести всю структуру не в базы, а в отдельные схемы. Этот подход конечно более предпочтителен, так как он будет работать на много быстрее, без всяких расширений и прослоек и для этого не понадобится особо ничего выдумывать.
→ Ссылка