postgres_fdw:可以将数据推送到外部服务器进行连接吗?



假设我有一个查询,比如

select * from remote_table
join local_table using(common_key)

其中remote_table是具有postgres_fdwFOREIGN TABLElocal_table是常规表。

local_table很小(100 行(,remote_table很大(数百万行(。

看起来远程表被整体拉取并在本地加入,此时将较小的表传送到远程服务器并远程加入会更有效。

有没有办法让postgres_fdw这样做?

不能使用连接来执行此操作,因为不同服务器上的表之间的连接始终在本地执行。

您可以尝试的是:

SELECT *
FROM (SELECT *
FROM remote_table
WHERE common_key IN (SELECT common_key FROM local_table)
) a
JOIN local_table USING (common_key);

我没有测试它,所以我不确定它是否有效,但这个想法是为外表扫描使用一个条件,可以向下推送并尽可能减少获取的数据量。

您是否尝试过将本地数据部署到外部服务器上的临时表中,然后将其加入外部表?不确定您的流程,或者这对您来说是否有效。

相关内容

  • 没有找到相关文章

最新更新