返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

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

发布于 2019-09-30 03:13:46 字数 578 浏览 1024 评论 0 收藏 0

在所有关系型操作符里,最难以处理和优化的一个是连接。一个查询需要回答的可选规划的数目将随着该查询包含的连接的个数呈指数增长。在访问关系分支时的进一步优化措施是由多种多样的连接方法(例如嵌套循环、索引扫描、融合连接等)来支持处理独立的连接和多种多样的索引(比如 B-tree, hash, GiST, GIN)。

目前 PostgreSQL 优化器的实现在候选策略空间里执行一个近似穷举搜索。这个算法最早是在 IBM System R database 数据库中引入的,它生成一个近乎最优的连接顺序,但是如果查询中的连接增长得很大,它可能会消耗大量的时间和内存空间。这样就使普通的 PostgreSQL 查询优化器不适合那种连接了大量表的查询。

德国弗来堡矿业及技术大学自动控制系的成员在试图把 PostgreSQL 作为用于一个电力网维护中做决策支持的知识库系统的后端时,碰到了上面的问题。该 DBMS 需要为知识库系统的推导机处理很大的连接查询。在可能的查询规划空间里进行检索的恶劣性能引起了人们对发展新的优化技术的需求。

在随后的内容里,描述了一个基因算法,这个算法用一种对涉及大量连接的查询很有效的方式解决了连接顺序的问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文