postgres_fdw向下推总和和计数,但不是最小值和最大值



从PostgreSQL 10.x开始,外部表支持聚合下推。

我注意到总和和计数操作被推送到远程服务器,但最小和最大不是以相同的方式推送。

select min(col) from foreign_table 

显示具有 ORDER BY 的外部扫描,后跟本地应用的 LIMIT。

就我而言,远程服务器实际上是Redshift而不是另一个PostgreSQL实例,因此这将比在查询上发出min要慢,就像总和或计数一样,奇怪的是,如果您执行这样的查询

select count(col), min(col) from foreign_table 

min将在查询上推送。

为什么postgres_fdw以不同的方式处理最小值/最大值,是否有优化器设置可以使最小值/最大值与其他聚合函数相同?

这实际上是最好和最快的方法。您是否测试了您的断言,即"这将比在查询上发出min慢"?

PostgreSQL 按需从执行器节点获取元组,因此会发生的情况是从外部扫描(通过索引(获取第一行,然后LIMIT将完成,不再读取行。这基本上与远程执行min时发生的情况相同。

相关内容

  • 没有找到相关文章

最新更新