Производительность Postgres_fdw для соединения с удаленной базой данных
Я сделал SQL-запрос, который выполняется в удаленной базе данных (с использованием расширения postgres_fdw) и объединяет информацию из 2 разных таблиц в удаленной базе данных. Время выполнения запроса занимает около 5 минут, хотя я создал удаленный сервер с параметром use_remote_estimate в качестве true. Когда я выполняю тот же запрос непосредственно в самой удаленной базе данных, для получения результатов требуется менее 5 секунд. Могу ли я сделать что-то для лучшей производительности? Есть ли какие-либо настройки для лучшей производительности? Когда запрос выполняется из моей базы данных в удаленную базу данных, используются ли внешние ключи и индексы или нет? Я не уверен в этом. У меня есть поиск в сети для решения, но нет ответа покрыть мои потребности. Спасибо
Когда я выполняю EXPLAIN (ANALYZE BUFFER) для удаленной базы данных, я получаю следующие результаты:
QUERY PLAN
Merge Join (cost=2920.60..6345984.84 rows=56546 width=440) (actual time=5874.882..834358.774 rows=3338 loops=1)
Merge Cond: (str.store_id = prf.store_id)
-> Sort (cost=1221.49..1229.84 rows=3338 width=18) (actual time=2835.745..2840.122 rows=3338 loops=1)
Sort Key: str.store_id
Sort Method: quicksort Memory: 314kB
-> Foreign Scan on store str (cost=100.00..1026.14 rows=3338 width=18) (actual time=158.809..2832.790 rows=3338 loops=1)
-> Sort (cost=1699.11..1707.58 rows=3388 width=23) (actual time=2882.143..2891.705 rows=3338 loops=1)
Sort Key: prf.store_id
Sort Method: quicksort Memory: 350kB
-> Foreign Scan on store_profile prf (cost=100.00..1500.47 rows=3388 width=23) (actual time=166.818..2878.937 rows=3338 loops=1)
SubPlan 1
-> Foreign Scan on store_profile p (cost=100.29..112.16 rows=1 width=19) (actual time=165.285..165.287 rows=1 loops=3338)
Planning time: 495.796 ms
Execution time: 834678.186 ms