数据库学习笔记(第十六章)

第十六章:查询优化

1.查询优化概述
查询优化就是从多个可能的策略中,找出最有效的查询执行计划的一种处理过程。

优化一方面可以在关系代数级别发生
另一方面是为处理查询选择一个详细的策略,比如执行算法、选择索引等

选择一个给定查询的执行方法

等价表达式
每个运算有不同算法

例子:查询music学院老师的姓名和教授的课程名称
在这里插入图片描述

在这里插入图片描述

左侧的表达式树将产生很大的中间关系,instructor ⋈ (teaches ⋈ (course),但是我们只对music学院的教师感兴趣,因此,优化后的表达式树变成右侧的。

一个执行计划准确地定义了每个运算应使用的算法,以及运算之间的执行应该如何协调
给定一个关系代数表达式,查询优化器的任务是产生一个查询执行计划,该计划能获得与原关系表达式相同的结果,并且得到结果集的执行代价最小

基于代价的优化的步骤

使用等价规则产生逻辑上的等价表达式
注解结果表达式来得到替代查询计划
基于代价估计选择代价最小的计划

2.关系表达式的转换

  • 如果两个关系代数表达式在所有有效数据库实例中都会产生相同的元组集,则称它们是等价的
    注意: 元组的顺序是无关紧要的
  • 在 SQL 语言中,输入和输出都是元组的多重集合
    若对于所有有效数据库,两个表达式产生相同的元组多重集合,则称多重集合版本的这两个关系代数表达式是等价的
  • 等价规则指出两种不同形式的表达式是等价的
    可以用第二种形式的表达式代替第一种,反之亦然

3.等价规则(重要)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

几个例子:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

对于关系 r1 , r2 和 r3
(r1 ⋈r2) ⋈r3 = r1 ⋈(r2 ⋈r3 )
(连接的结合律)
如果 r2 ⋈ r3是较大的, r1 ⋈ r2 是小的,选择
(r1 ⋈r2) ⋈r3
使得可以计算和存储一个较小的临时关系

在这里插入图片描述

3.代价估计

  • 一个操作的代价依赖于它的输入的大小和其他统计信息
  • 我们首先列出一些有关存储在数据库目录中的关于数据库关系的统计信息,然后指出如何使用这些统计信息估计不同关系操作运算结果的统计信息

4.表达式结果集统计大小的估计
在这里插入图片描述

  • 关于索引的统计信息,比如B+树的高度和索引中叶节点的页数,也保存在目录中。
  • 每次修改数据库中的数据时,必须同时更新统计信息。

5.直方图
在这里插入图片描述

一个直方图只占用很少的空间,因此不同的属性上的直方图可以存储在系统目录里
等宽直方图:把取值范围分成相等大小的区间
等深直方图:调整区间分解,以使落入每个区间的取值个数相等

6.选择运算结果大小的估计

在这里插入图片描述

END

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值