关系查询处理和查询优化
查询优化分类 :
代数优化:指关系代数表达式的优化
物理优化:指存取路径和底层操作算法的选择
1、关系数据库系统的查询处理
查询处理步骤
1. 查询分析
2. 查询检查
3. 查询优化
4. 查询执行
实行查询操作的算法示例
1.选择操作的实现
(1) 全表扫描方法 (Table Scan)
(2)索引扫描方法 (Index Scan)
2.连接操作的实现
连接操作是查询处理中最耗时的操作之一
(1)嵌套循环算法(nested loop join)
(2)排序-合并算法(sort-merge join 或merge join)
(3)索引连接(index join)算法
(4)Hash Join算法
关系数据库系统的查询优化
查询优化的概述
关系系统的查询优化是关系数据库管理系统实现的关键技术又是关系系统的优点所在
集中式数据库
执行开销主要包括
磁盘存取块数(I/O代价)
处理机时间(CPU代价)
查询的内存开销
I/O代价是最主要的
分布式数据库
总代价=I/O代价+CPU代价+内存代价+通信代价
算法:
一、
Q1=πSname(σStudent.Sno=SC.Sno∧SC.Cno='2' (Student×SC))
(1) 计算广义笛卡尔积
(2)作选择操作
(3)作投影操作
二、
Q2=πSname(σSc.Cno='2' (Student SC))
(1)计算自然连接
(2)读取中间文件块,执行选择运算,读取的数据块= 103 块
(3)把第2步结果投影输出。
三、
Q3=πSname(Student σSC.Cno='2'(SC))
(1)先对SC表作选择运算,只需读一遍SC表,存取 100块,因为满足条件的元组仅50个,不必使用中 间文件。
(2)读取Student表,把读入的Student元组和内存中 的SC元组作连接。也只需读一遍Student表共100 块。
(3)把连接结果投影输出
3、代数优化
关系代数表达式等价代换规则
常用的等价变换规则:
1.连接、笛卡尔积交换律
2.连接、笛卡尔积的结合律
3.投影的串接定律
4.选择的串接定律
5.选择与投影操作的交换律
6. 选择与笛卡尔积的交换律
7. 选择与并的分配律
8. 选择与差运算的分配律
9. 选择对自然连接的分配律
10. 投影与笛卡尔积的分配律
11. 投影与并的分配律
查询树的启发式优化
v典型的启发式规则
(1)选择运算应尽可能先做在优化策略中这是最重要、最基本的一条。
(2)把投影运算和选择运算同时进行如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。
(3) 把投影同其前或其后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系。
(4) 把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡尔积省很多时间。
(5) 找出公共子表达式
如果这种重复出现的子表达式的结果不是很大的关系
l并且从外存中读入这个关系比计算该子表达式的时间少得多
l则先计算一次公共子表达式并把结果写入中间文件是合算的。
l当查询的是视图时,定义视图的表达式就是公共子表达式的情况
物理优化
物理优化就是要选择高效合理的操作算法或存取路径,求得优化的查询计划
物理优化方法
基于规则的启发式优化
启发式规则是指那些在大多数情况下都适用,但不是在每种情况下都是适用的规则。
基于代价估算的优化
l优化器估算不同执行策略的代价,并选出具有最小代价的执行计划。