文章目录

  • ​​1.为什么需要查询优化​​
  • ​​2.查询优化定义​​
  • ​​3.查询优化的总体思路-语义优化​​
  • ​​4.查询优化的总体思路-语法优化​​
  • ​​5.小结​​

1.为什么需要查询优化

关系数据库最大的问题就是执行效率问题,比如乘积运算

  • eg:

    •Student: 10000个学生记录(每年2500,四年)
    •Course: 1000门课程记录
    •SC: 10000*50条选课记录(注:10000学生,每人选50门课程)
    •Student* SC*Course
    10000*50*10000*1000条记录=5*1012条记录

关系代数的操作次序是很重要的,下面三条关系代数语句表示同样的检索需求,但是第三条显然更好

(P47-48)数据库系统下-什么是查询优化_搜索引擎

2.查询优化定义

查询优化:“如何使数据库查询的执行时间最短?”

三个层面进行优化:

  • 语义优化: 利用模型的语义及完整性规则,优化查询。
  • 语法优化—逻辑层优化: 利用语法结构,优化操作执行顺序;
  • 执行优化—物理层优化: 存取路径和执行算法的选择与执行次序优化;

3.查询优化的总体思路-语义优化

语义优化—内容等价性

  • 利用语义等价性、完整性规则进行语义优化

4.查询优化的总体思路-语法优化

语法优化(逻辑层优化)—语法等价性

  • DBMS能够自动转换
  • (P47-48)数据库系统下-什么是查询优化_查询优化_02

  • 逻辑优化的基本思想,最终得到一个逻辑查询计划
    改变关系代数的操作次序,尽可能早做选择和投影运算
  • (P47-48)数据库系统下-什么是查询优化_执行效率_03

执行优化(物理层优化)的基本思想

  • 逻辑查询计划按照物理层进行考虑
  • 逻辑查询计划是以关系代数操作为对象
  • 物理查询计划是以关系代数操作的例行执行程序为操作对象

5.小结

查询优化在DBMS的位置

(P47-48)数据库系统下-什么是查询优化_关系代数_04

查询优化的总体思路

  • 逻辑查询优化是对关系代数操作次序的优化;
  • 物理优化是为每一个关系代数操作选择不同的算法,即选择不同的执行例行程序,然后再将其装配起来,形成一个个方案,选择哪一个方案则需要进行代价估算。
  • 最终形成一个物理查询计划,该物理查询计划由执行引擎解释并执行