在所有关系运算符中,最难处理和优化的是连接。可能的查询计划数量随着查询中连接数量的增加呈指数增长。进一步的优化工作源于对各种连接方法的支持(例如,PostgreSQL中的嵌套循环、哈希连接、归并连接)来处理单个连接,以及作为关系访问路径的各种索引(例如,PostgreSQL中的 B 树、哈希、GiST 和 GIN)。
正常的PostgreSQL查询优化器对替代策略空间执行近乎详尽的搜索。该算法最初在 IBM 的 System R 数据库中引入,它产生接近最佳的连接顺序,但当查询中的连接数量变大时,可能需要大量的运行时间和内存空间。这使得普通的 PostgreSQL 查询优化器不适用于连接大量表的查询。
德国弗赖贝格矿业技术大学的自动化控制研究所在希望使用 PostgreSQL 作为维护电网的决策支持知识库系统的后端时遇到了一些问题。数据库管理系统需要处理知识库系统推理机的大型连接查询。这些查询中的连接数量使得使用普通的查询优化器变得不可行。
在下文中,我们将描述遗传算法的实现,以解决连接排序问题,使其能够有效处理涉及大量连接的查询。
如果您在文档中发现任何不正确、与您特定功能的使用经验不符或需要进一步澄清的地方,请使用此表单报告文档问题。