数据库第9章作业——关系查询处理和查询优化

这一章的题,我想用一个字形容——“绝”。。。
先复习一下查询树的启发式优化规则

(1)选择运算应尽可能先做
(2)把投影运算和选择运算同时进行
(3)把投影同其前或后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系
(4)把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算。
(5)找出公共子表达式。

本章作业是第2、3、4、5题。
2题

假设关系R(A,B)和S(B,C,D)情况如下:R有20000个元组,S有1200个元组,一个块能装40个R的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。
(1)R上没有索引,select * from R;
(2)R中A为主码,A有3层B+树索引,select * from R where A = 10;
(3)嵌套循环连接R⋈S;
(4)排序合并连接R⋈S,区分R与S在B属性上已经有序和无序两种情况。

3题

对学生-课程数据库,查询信息系学生选修了的所有课程姓名

select Cname
from Student,Course,SC
where Student.Sno=SC.Sno and SC.Cno=Course.Cno and Student.Sdept='IS';

试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。

4题

对于下面的数据库模式
Teacher(Tno, Tname, Tage,Tsex); Department(Dno, Dname, Tno); Work(Tno, Dno, Year, Salary) 假设Teacher的Tno属性,Department的Dno属性以及Work的Year属性上有B+树索引,说明下列查询语句的一种较优的处理方法。
(1)select * from teacher where Tsex = '女'
(2)select * from department where Dno < 301
(3)select * from work where Year <> 2000
(4)select * from work where year > 2000 and salary < 5000
(5)select * from work where year < 2000 and salary < 5000

5题

对于题4中的数据库模式,有如下查询

select Tname
from teacher,department,work
where teacher.tno = work.tno and department.dno = work.dno
and department.dname = '计算机系' and salary > 5000

画出语法树以及用关系代数表示的语法树,并对关系代数语法树进行优化,画出优化后的语法树。

答案

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45845039/article/details/116673051