关系查询处理和查询优化习题

1.假设关系R(A, B)和S(B, C, D)情况如下: R有20000个元组,S有1 200个元组,一个块能装40
个R的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。

1> R上没有索引,sclect from R;*
2000/40=500次
2> R中A为主码,A有3层B+数索引,`select * from R where A = 10;
三层,一个数据,所以是3+1=4

3> 嵌套循环连接RDAS;
S占有块少,作为外表,R作为内表
1200/30 + (20000/40)*(40/内存分配块数)
4> 排序合并连接RDAS,区分R与S在B属性上已经有序和无序两种情况。
有序:R和S都是读一遍 2000/40+1200/30=540
无序:需要先排序 T(排序)+540

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

select Cname
from Student,Course,Score
where Student.Sno=Score.Sno and Score.Cno=Course.Cno and Student.Sdept="IS";

画出代数表示的语法树,并用噶UN西代数表达式优化算法对原始的语法树进行优化
关系查询处理和查询优化习题_第1张图片
关系查询处理和查询优化习题_第2张图片
3.对于下面的数据库模型

Teacher(**Tho**,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
索引扫描法,并通过B+树顺序集合找到数据
3> select * from work where Year<>2000
全表扫描法
4>select * from work where year>2000 and salary<5000
先使用B+树扫描对year选择,然后判断salary是否适合
5>select * from work where year < 2000 or salary<5000
salary没有索引
全表扫描

你可能感兴趣的:(数据库系统,数据库)