查询优化概述

查询优化的总目标:选择有效策略,求得给定关系表达式的值,使查询代价最小(实际上是较小)

  1. 代数优化

    是关系代数表达式的优化,按照一定的规则,改变代数表达式中操作的次序和组合,使查询执行更高效。只改变查询语句中操作的次序和组合不涉及底层的存取路径

  2. 基于存取路径的优化

    合理选择各种操作的存取路径以获得优化效果,需要考虑数据的物理组织和访问路径,以及底层操作算法的选择。涉及数据文件的组织方法、数据值的分布情况等,也称为物理优化

  3. 基于代价估算的优化

    对于多个可选的查询策略,通过估算执行策略的代价,从中选择代价最小的作为执行策略

在实际的关系数据库中,查询优化的具体实现不完全相同,但往往都综合运用了这些优化技术,以获得较好的查询优化效果。

实际系统的查询优化步骤

  1. 将查询转换成某种内部表示,通常是语法树

  2. 根据一定的等价变换规则把语法树转换成标准(优化)形式

  3. 选择底层的操作算法

    对于语法树中的每一个操作,计算各种执行算法的执行代价,选择代价小的执行算法

  4. 生成查询计划(查询执行方案),查询计划是由一系列内部操作组成的

Last updated