1. 查询优化的基础
优化就是寻找执行代价(费用和时间)最小的查询执 行策略,使系统执行效率降到最低
- 局部执行代价
- 主要指输入/输出次数(I/O代价)及CPU 处理代价
- 数据只有读到内存才能进行连接
- 网络传输代价
- 指传输启动代价和数据传输代价
要读写的块数/每秒读写的块数=代价
1.1. 优化的内容
- 执行运算的次序
- 执行每种运算的方法
- 所访问的副本场地。如:选择就近的场地,节约传输代价
- 执行运算的场地的选择,使总的传输代价或总代价最低
1.2. 关系代数

1.2.1. 等价变换

1.3. 查询树
叶子表示关系,中间节点表示 运算,前序遍历关系表示运算次序


2. 查询处理概述
SQL–非过程化的关系数据库语言,是元组演算语言
查询处理问题
- 将演算查询转换为代数操作
- 选择最好的执行计划
对于分布式数据库,查询处理器必须考虑通信代价和选择最佳场地
3. 查询处理层次
3.1. 查询分解(Query Decomposition
基于全局概念模式将演算查询分解为代数查询
1 | Step1 – 演算规范化 |
3.1.1. 规范化
对于SQL语句,对Where子句中的谓词表示进行规范化
3.1.2. 分析
拒绝类型不正确或语义不正确的查询
3.1.3. 约简
应用转换规则、幂等规则消除冗余

3.1.4. 查询重写
将用户请求构成的查询树进行等价变换

4. 数据本地化
数据本地化将介绍全局查询到片段查询的变换。 即利用全局关系与其片段关系的等价变换,将分布 查询中的全局关系替换为对片段关系的查询,变换 后的查询称为片段查询

4.1. 片段查询优化
1 | 准则1:对于一元运算,根据一元运算的重复律,将叶子节点之前的选择运算作用于片段,如果不满足片段的限定条 件,则置为空关系。 |