Postgres是如何使用游标执行连接查询的?



与常规查询相反,当使用游标和FETCH时,Postgres如何执行连接查询?它是否等待整个连接完成并只返回少量行?或者,它是否在两个表的子集上执行部分连接并返回其结果等等?

这取决于所选择的连接策略。嵌套循环连接可以快速返回第一行。散列连接返回前几行所需的时间更长,合并连接所需的时间更长。如果你使用游标(可通过cursor_tuple_fraction配置),PostgreSQL更喜欢可以返回前10%数据的计划,但这意味着获取所有行的速度会变慢(PostgreSQL认为在应用程序获取整个结果集之前需要很长时间)。

最新更新