文章目录
- 逻辑分解是逻辑优化一部分
- 这里和物理优化产紧密
- 重写中,Query->Jointree通过Rangetblentry组织起来,
- 逻分中,所有Rangetblentry将建立一个对应Reloptlnfo,
- Rangetblentry在物理优化时不适用,用Reloptlnfo代替
- Rangetblentry对应范围表
- 它对表描述,属逻辑层面,
- 内部没提供和物理代价及物理路径相关的成员变量
- Reloptlnfo: 生成物理连接路径及计算路径代价,属物理层面。
- 它对表描述,属逻辑层面,
- 査询树中约東条件是个表达式,只保存表达式本身所需内容
- 逻辑分解将这些裸用Restrictlnfo封装
- 这样就可扩展表达式内容,
- 如在Restrictlnfo中记录约束条件在物理优化中需要的变量
- Query中,约束条件(表达式)存放位置就是它原始的语法位置
- 逻辑分解中,对约束条件尝试下推
- Restrictlnfo是为在下推时能更好和Reloptlnfo结合
- 逻辑分解阶段会基于等价类推理,生成一些隐含的约束条件,
- A=B和约束条件B=C能够推导出新的约束条件A=C,
- A=B和SORT(B)能推出A和B同样有序
- A=B和B=5能够推导出新的约束A=5,
- 基于这种推理在物理优化阶段能够生成更丰富的连接路径。
- 关系数据库引入外和半连接,很多关系代数中的经典理论不适用
- 约束条件下推过程中
- 由于外连接的引入导致一些连接条件被延迟下推(delay)。
- 谓词下推、连接顺序交换、基于等价类的推理是査询优化难点,
- 没透彻理解逻辑分解优化,那么物理优化理解就更难