支持的版本: 当前 (17) / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

60.1. 作为复杂优化问题的查询处理 #

在所有关系运算符中,最难处理和优化的是连接。可能的查询计划数量随着查询中连接数量的增加呈指数增长。进一步的优化工作源于对各种连接方法的支持(例如,PostgreSQL中的嵌套循环、哈希连接、归并连接)来处理单个连接,以及作为关系访问路径的各种索引(例如,PostgreSQL中的 B 树、哈希、GiST 和 GIN)。

正常的PostgreSQL查询优化器对替代策略空间执行近乎详尽的搜索。该算法最初在 IBM 的 System R 数据库中引入,它产生接近最佳的连接顺序,但当查询中的连接数量变大时,可能需要大量的运行时间和内存空间。这使得普通的 PostgreSQL 查询优化器不适用于连接大量表的查询。

德国弗赖贝格矿业技术大学的自动化控制研究所在希望使用 PostgreSQL 作为维护电网的决策支持知识库系统的后端时遇到了一些问题。数据库管理系统需要处理知识库系统推理机的大型连接查询。这些查询中的连接数量使得使用普通的查询优化器变得不可行。

在下文中,我们将描述遗传算法的实现,以解决连接排序问题,使其能够有效处理涉及大量连接的查询。

提交更正

如果您在文档中发现任何不正确、与您特定功能的使用经验不符或需要进一步澄清的地方,请使用此表单报告文档问题。