数据库数据库入门

【数据库】数据库入门(十): 查询优化(Query Optimi

2020-01-02  本文已影响0人  Ulrich蚊子

查询处理

  1. 用户提交 SQL 查询请求给数据库管理系统
  2. 数据库管理系统处理和执行 SQL 请求,从数据库中获取相应数据并返回。
image

由于 SQL 只是一种声明性的语言,因此 DBMS 需要决定如何执行 SQL 查询语句。

形态 类别
SELECT name FROM Person WHERE age<21; 上层语言(SQL)
π_{name}(σ_{age<21}(Person)) 下层语言(关系代数 RA)
π_{name} \rightarrow σ_{age<21} \rightarrow Person 执行表(查询树)
查询结果

在上述过程中,查询处理过程经历了一下步骤:

  1. 检查 SQL 查询语法
  2. 验证关系表是否存在(表名、属性、数据类型、权限等)
  3. 转化成关系代数表达式(分解成不同的查询块,再分别转化)
  1. 转化成可能为最优的执行表(对于同一个 SQL 查询,可能形成不同的执行表)
  2. 在执行表中明确每一个操作符的实现
  1. 评价查询执行表
  2. 返回结果给用户

查询优化是关系型数据库管理系统中最重要的任务之一。一个好的 DBMS 必须拥有一个好的查询优化器。

查询树与执行表

每一个 RA 表达式都可以用查询树来表示,其中:

而执行表就是在查询树的基础上,在每个节点的位置添加注解,用以说明每个表的访问方法以及每个 RA 运算符的实现方法

查询优化

在实践中,查询优化器包含以下三种优化方法:

  1. 思想:在其他操作之前应用最严格的操作,可以减少中间结果的大小
  2. 下推选择(Push-down selection):尽早应用,减少元组的数量
  3. 下推投影(Push-down projection):尽早应用以减少属性的数量。
  4. 重新排序连接(Re-ordering joins):首先应用限制性连接来减少结果的大小。

一个普遍的查询模式为 连接(join)- 选择(select)- 投影(project)。

上一篇下一篇

猜你喜欢

热点阅读