繁体   English   中英

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

[英]postgres_fdw: possible to push data to foreign server for join?

假设我有一个类似的查询

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);

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM