数据库之查询优化器

目录

1、相关定义:

2、当sql语句执行过程中的各个步骤:

3、优化器的两种方式

3.1 基于规则的优化器(RBO)

3.2 基于代价的优化器(CBO)

4、优化器的两个阶段

4.1 逻辑优化

4.1.1 关系表达式等价代换

4.1.2 查询树的启发式规则

找出公共子表达式

4.2 物理优化

4.2.1 启发式规则

4.2.2 基于代价的算法

4.2.3  单表,两表,多表


1、相关定义:

数据库包括三个部分:语法分析器、优化器、执行引擎

其中优化器的作用是把关系表达式通过等价转换为查询树,寻找最优路径,生成最优执行计划,很大程度上决定了数据库的性能

2、当sql语句执行过程中的各个步骤:

语法分析(语法是否规范),语义分析(数据库对象是否存在,用户是否有权限),视图转换(将对视图的查询语句转换成对基表的查询语句),表达式转换(将复杂的sql语句转换为简单的等效连接表达式),选择优化器,选择连接方式,选择连接顺序(对多表连接来说,选择合适的连接顺序),选择搜索路径,执行生成计划

3、优化器的两种方式

3.1 基于规则的优化器(RBO)

基于前人已有的规则进行优化

3.2 基于代价的优化器(CBO)

根据代价评估模型,计算不同执行计划的代价,选择代价最小的进行优化

4、优化器的两个阶段

4.1 逻辑优化
4.1.1 关系表达式等价代换

目的:通过等价代换简化复杂的关系表达式,减少磁盘的I/O操作,减小占据的空间大小,提升查询效率

代换公式:连接、笛卡尔积交换律

连接、笛卡尔积结合律

选择、投影的串接定律

选择与投影的交换律

4.1.2 查询树的启发式规则
  • 优先做选择和投影(选择条件在查询树上下推)
  • 子查询的消除
  • 连接、外连接、嵌套连接的消除
  • 笛卡尔积尽量与其他操作合并(连接运算比笛卡尔积要快)
  • 剪掉冗余操作(一些剪枝优化技术)、最小化查询块
  • 找出公共子表达式
4.2 物理优化

涉及到底层数据存储以及执行算法的选择,目的是选择效率最高的存取路径和操作算法,以减少资源消耗和提升查询速度

4.2.1 启发式规则

基于经验法则

4.2.2 基于代价的算法

估算代价模型

4.2.3  单表,两表,多表

选择单表扫描方式、两表连接方式、多表连接顺序

解决例题:

例一:为减少查询优化器需要考虑查询计划的个数,查询优化可采用一系列的启发式方法减小搜索空间,请列出三条并解释原因。

1、优先进行投影和选择操作(在前期过滤掉不相关数据可以大规模减少后期的数据量)

2、优先笛卡尔积与其他操作合并(连接操作的代价远小于笛卡尔积操作)

3、保留公共子表达式(避免重复运算)

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值