我正在进行表连接顺序优化的工作。
在查询处理过程中,我想要获取由优化器生成的表连接顺序,并通过在PostgreSQL中使用自己的算法来更新它。
在查询处理过程中,我如何更新表连接顺序?
在查询处理过程中,我想要获取由优化器生成的表连接顺序,并通过在PostgreSQL中使用自己的算法来更新它。
在查询处理过程中,我如何更新表连接顺序?
select ... from a, b, c, d, e ...
...这种类型的查询总是被重新排序。
但如果你这样做:
select ... from a JOIN b ... JOIN c JOIN d JOIN c ...
join_collapse_limit
个表。您可以将此变量减小到一个较低的值,以强制PostgreSQL按照您的顺序进行排序;但是,我建议尽量避免这样做。SET LOCAL
,并且您应该首先考虑为什么要改变连接顺序。还有一种使用提示(注释)来强制加入顺序的扩展。这个pg_hint_plan将帮助您获得首选顺序。
from_collapse_limit
参数来控制FROM子句中子查询的折叠,详见:https://www.postgresql.org/docs/14/runtime-config-query.html#GUC-FROM-COLLAPSE-LIMIT - ADJenks