数据库-第5章-查询优化-笔记
查询优化方法:当一个查询中具有选择和连接时,应当先执行选择后执行连接,尽量减少中间结果的大小,加快连接操作的处理。
关系代数优化算法
一个查询可以变换为一个等价的关系代数表达式。
在很多数据库管理系统中,查询处理的第一步是把查询变换为与关系代数对应的内部表示,如查询树。
在关系数据库管理系统中,关系代数表达式的优化是一个非常重要的问题。
关系代数等价变换规律
- 选择串接律
$$\delta_{c_1 AND \ldots AND c_n (E) = \delta_{c_1} (\delta_{c_2} (…(\delta_{c_n}(E))))}$$ - 选择交换律
$$\delta_{c_1} (\delta_{c_2}(E))= \delta_{c_2}(\delta_{c_1}(E))$$ - 投影串接律
- 投影交换律
- 连接和笛卡儿乘积的交换律
- 集合操作的交换律
- 连接、笛卡儿乘积和集合操作的结合律
- 选择、连接和笛卡儿乘积的分配律
- 投影、连接和笛卡尔乘积的分配律
- 选择与集合操作的分配律
- 投影与集合操作的分配律
- 其他等价变换律
关系代数优化规则
- 规则1 选择和投影操作尽早执行。
- 规则2 把某些选择操作与邻接笛卡尔乘积相结合,形成一个连接操作。
- 规则3 同时执行相同关系上的多个选择和投影操作。
- 规则4 把投影操作与连接操作结合起来执行。
- 规则5 提取公共表达式。
查询树
- 查询的内容表现形式——查询树
- 查询树是一种表示关系代数表达式的树形结构
- 在一个查询树中,叶子节点表示关系,内结点表示关系代数操作。
- 查询树以自底向上的方式执行:当一个内结点的操作分量可用时,这个内结点表示的操作启动执行,执行结束后,用结果关系代替这个内结点(转化为叶子结点)。
构造查询树:
- 把用高级语言定义的查询转换为关系代数表达式
- 把关系代数表达式转换为查询树