关系数据库管理系统查询处理阶段 : 1. 查询分析 2. 查询检查 3. 查询优化 4. 查询执行
选择操作典型实现方法: (1) 全表扫描方法 (Table Scan) 对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出 适合小表,不适合大表 (2)索引扫描方法 (Index Scan) 适合于选择条件中的属性上有索引(例如B+树索引或Hash索引) 通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询的基本表中找到元组
连接操作的实现:(1)嵌套循环算法(nested loop join) (2)排序-合并算法(sort-merge join 或merge join) (3)索引连接(index join)算法 (4)Hash Join算法
查询优化在关系数据库系统中有着非常重要的地位 关系查询优化是影响关系数据库管理系统性能的关键因素 由于关系表达式的语义级别很高,使关系系统可以从关系表达式中分析查询语义,提供了执行查询优化的可能性
关系代数表达式等价变换规则:代数优化策略:通过对关系代数表达式的等价变换来提高查询效率 关系代数表达式的等价:指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的 两个关系表达式E1和E2是等价的,可记为E1≡E2
常用的等价变换规则: 1.连接、笛卡尔积交换律 设E1和E2是关系代数表达式,F是连接运算的条件,则有 E1 × E2≡E2 × E1 E1 E2≡E2 E1 E1 E2≡E2 E1 2.连接、笛卡尔积的结合律 设E1,E2,E3是关系代数表达式,F1和F2是连接运算的条件 (E1 × E2) × E3≡E1 × (E2 × E3) (E1 E2) E3≡E1 (E2 E3) (E1 E2) E3≡E1 (E2 E3)
3.投影的串接定律 ( (E))≡ (E) E是关系代数表达式 Ai(i=1,2,…,n),Bj(j=1,2,…,m)是属性名 {A1,A2,…,An}构成{B1,B2,…,Bm}的子集
4.选择的串接定律 ( (E ))≡ (E) E是关系代数表达式,F1、F2是选择条件 选择的串接律说明选择条件可以合并,这样一次就可检查全部条件
5.选择与投影操作的交换律 σF( (E))≡ (σF(E)) 选择条件F只涉及属性A1,…,An。 若F中有不属于A1,…,An的属性B1,…,Bm有更一般规则: (σF(E ))≡ (σF ( (E)))
6. 选择与笛卡尔积的交换律 如果F中涉及的属性都是E1中的属性,则 σF(E1×E2)≡σF(E1)×E2 如果F=F1∧F2,并且F1只涉及E1中的属性,F2只涉及E2中的属性,则由上面的等价变换规则1,4,6可推出: σF(E1×E2)≡ (E1)× (E2) 若F1只涉及E1中的属性,F2涉及E1和E2两者的属性,则仍有 σF(E1×E2)≡ ( (E1)×E2) 它使部分选择在笛卡尔积前先做。
7. 选择与并的分配律 设E=E1∪E2,E1,E2有相同的属性名,则 σF(E1∪E2)≡σF(E1)∪σF(E2)
8. 选择与差运算的分配律 若E1与E2有相同的属性名,则 σF(E1-E2)≡σF(E1)-σF(E2)
9. 选择对自然连接的分配律 σF(E1 E2)≡σF(E1) σF(E2) F只涉及E1与E2的公共属性
10. 投影与笛卡尔积的分配律 设E1和E2是两个关系表达式,A1,…,An是E1的属性, B1,…,Bm是E2的属性,则 (E1×E2)≡ (E1)× (E2)
11. 投影与并的分配律 设E1和E2有相同的属性名,则 (E1∪E2)≡ (E1)∪ (E2)
v代数优化改变查询语句中操作的次序和组合,不涉及底层的存取路径 对于一个查询语句有许多存取方案,它们的执行效率不同, 仅仅进行代数优化是不够的 物理优化就是要选择高效合理的操作算法或存取路径,求得优化的查询计划