wrs*_*der 7 postgresql postgres-fdw postgresql-10
假设我有一个类似的查询
select * from remote_table
join local_table using(common_key)
Run Code Online (Sandbox Code Playgroud)
其中 remote_table 是一个FOREIGN TABLEwithpostgres_fdw并且local_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);
Run Code Online (Sandbox Code Playgroud)
我没有测试它,所以我不确定它是否会起作用,但想法是使用一个可以下推的外部表扫描条件,并尽可能减少获取的数据量。
| 归档时间: |
|
| 查看次数: |
447 次 |
| 最近记录: |