- 选择操作的实现
select * from student where Sno='201212128';
- 简单的全表扫描法
优点:对于小表简单有效
缺点:对于大表顺序扫描浪费时间效率低下 - 索引扫描方法
- 连接操作的实现
连接操作是查询处理中最耗时的操作之一
select *from student,sc where student.sno=sc.sno;
算法一:嵌套循环:
对外层循环(student)的每一个元组(s),检索内层循环(sc)中的每一个元组,并检查两个元组的连接属性(sno)的属性是否相同,如果满足 连接条件,则串接后作为结果输出,直到外层表中的元组循环结束。
算法二:排序--合并算法
表没有排序,则先按表的连接属性对sno进行排序,取student表中的的一个sno,依次扫描sc中具有相同属性的sno元组,将他们连接起来,扫描完sc中的sno元组发现没有对应的sno,则拿出student的第二个sno对sc中的sno元组进行扫描,直到student中的sno元组扫描完成。
- 优化准则:
- 关系代数表达式等价转换规则:
- 连接,笛卡尔积的交换律。
- 连接,笛卡尔积的结合律
- 投影的串接定律
- 选择的串接定律
- 选择与投影的交换律
- 选择与笛卡尔积的交换律
- 选择与并的分配律
- 选择与差的分配律
- 选择对自然连接的分配律
- 投影与笛卡尔积的分配律
- 投影与并的分配律