我有一个疑问,本质上是
SELECT *
FROM foreign_table_a
LEFT JOIN local_table_b on foreign_table_a.id = local_table_b.id
我正在查看datagrip中的解释分析,除了我大部分时间都花在外国扫描上之外,我并没有真正获得任何信息。
我如何知道外部表中发生了什么?我是否需要解析正在运行该外部扫描的 sql 并在外部服务器上运行解释?
我也不确定为什么此连接使用嵌套循环。所有被比较的东西都有一个索引,所以你会认为它会更有效,对吧?
此外,外表实际上是一个视图。是否可以使用
ANALYZE
收集有关外国视图的统计数据?
我假设你指的是 postgres_fdw。
您可以通过
EXPLAIN (VERBOSE) SELECT ...
查看远程查询。如果仍然不清楚为什么需要这么长时间,请直接在远程服务器上使用 EXPLAIN (ANALYZE, BUFFERS, SETTINGS)
进行远程查询并运行它。