我需要实现与PostgreSQL的GEQO功能一致的功能。我知道GEQO方法是将查询计划编码为整数字符串,并且GEQO随机生成这些可能的连接序列。来源:http : //www.postgresql.org/docs/9.3/static/geqo-pg-intro.html
我的问题是:如果我明确知道正确的连接顺序,那么如何修改GEQO函数,这样我就不必搜索其他连接顺序。例如,如果我知道加入4个关系的最佳方法是4-1-3-2,则不必检查其他排列。
关于如何在PostgreSQL中实现GEQO的资料不多。PostgreSQL仅给出了GEQO功能的整体视图,而没有太多解释。
还是可以不使用GEQO在standard_join_search()本身中实现此功能?
3
听起来您想实现查询提示。一切都很好,但是您不应期望在PostgreSQL核心中接受更改,因为您不会将项目社区称为查询提示的忠实拥护者。如果您对此很认真,则需要阅读大量的查询计划程序代码,并且需要弄清楚如何将解析器中的提示向下传递给重写器并进入计划程序。我在这里看不到快速简单的答案。您最终想要做的是在计划器/优化器中强制选择特定的路径。
—
克雷格·林格
嗯,是的,他们对查询提示持怀疑态度。我已经阅读了计划程序的代码,看来GEQO将是最小化对现有核心所做的更改的一种方法。
—
user2761431 2014年
这是您要实现的,实现查询提示以强制联接排序的目标吗?如果是这样,请调查是否有人已经实施了它。您还应该考虑为什么需要它,为什么计划者首先做出错误的选择。考虑产生一个独立的测试用例并报告pgsql-performance。
—
克雷格·林格
有pg_hint_plan:en.sourceforge.jp/projects/pghintplan,但我没有使用它。一个dba告诉我它正在9.2上运行。俄语中也有关于此的
—
ckorzhik 2014年