DB2 优化器中针对JOIN 结果集估计经典版!

以下的文章主要描述的是DB2 优化器中针对 JOIN 语句的实际操作结果集估计,在实际操作中DB2 优化器在为 SQL 语句生成执行计划时,其实际操作过程中都会对每个步骤产生的结果集大小进行估计,这就是优化器的基估计。

公司主营业务:网站制作、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出万柏林免费做网站回馈大家。

在所有 SQL 语句基估计过程中,以 JOIN 语句的计算过程最复杂,而 JOIN 语句恰恰是进行性能优化的重点。本文主要关注 DB2 优化器在进行基估计时采用的计算方法、输入等。

简介

优化器是 DB2 的心脏和灵魂(可以把它类比成宝马 730 或波音 747 的发动机引擎一样)。它分析 SQL 语句并确定可以满足每条语句的最有效的存取路径。 DB2 SQL 优化器可以估计每个备选访问计划的执行成本,并根据其估计结果选择一个最佳访问计划。

在优化器在优化一个 SQL 语句的过程中使用到两个非常重要的概念:selectivity 和 cardinality 。 selectivity 是指一个 SQL 操作的得出结果集占原来结果集的百分比,而 cardinality 就是指一个 SQL 操作的得出结果集的行数。

为正确地确定每种访问计划的成本,DB2 优化器都会对每个步骤产生的结果集大小即返回的行数进行估计,这就是优化器的基估计。 DB2 优化器需要准确的基数估计值。基数估计是这样一种过程:在应用了谓词或执行了聚集之后,优化器使用统计信息确定部分查询结果的大小。对于访问计划的每个操作符,优化器将估计该操作符的基数输出。一个或更多谓词的应用可以减少输出流基数。

JOIN 谓词

当我们在 SQL 里面需要对多个表进行 join 的时候,DB2 会首先选择其中的 2 个表进行 join,并获取到一个中间的结果集,然后 DB2 可能会用这个中间的结果集和第三个表做 join,再次获得中间的结果集(当然也可能是把另外 2 个表做 join,然后把两个中间的结果集进行 join 操作),不管是怎么操作,DB2 一次能够 join 的表的个数肯定是两个。因此当优化器在考虑 Join 如何处理的时候,join 的顺序就是一个很重要的问题,因为我们总是希望能够在最开始就把结果集控制的尽量小。

以上的相关内容就是对DB2 优化器中针对 JOIN 语句的结果集估计的介绍,望你能有所收获。

【编辑推荐】

  1. DB2 数据类型如何才能轻松接触?
  2. DB2v9.5控制中心建库报错如何挽救?
  3. IBM DB2数据库错误信息的大集合,不得不看!
  4. 降低DB2管理表空间的高水位标记实操
  5. 3个建议实现DB2数据库设计,很简单!

网站名称:DB2 优化器中针对JOIN 结果集估计经典版!
URL网址:http://www.shufengxianlan.com/qtweb/news43/31693.html

成都网站建设公司_创新互联,为您提供网站设计公司网站维护外贸网站建设品牌网站制作全网营销推广域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联