数据库作业19:第九章: 关系查询处理和查询优化 课后习题

B:占用的块数;Br,Bs分别代表R,S占用的块数;
Frs,Mrs分别是连接选择率,存放连接结果因子表示每块可存放的结果元组数
在这里插入图片描述
2、假设关系R(A,B)]和S(B,C,D)情况如下:R有20000个元组,S有1200个元组,一个块能装40个R的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。
(1)R上没有索引,

select * from R;

只在R上查询时:20000/40=500(块);

(2)R中A为主码,A有三层B+树索引
B+树图文详解,这篇文章将B+树用户简单易懂的方式解释,利于更好的复习B+树的相关知识。

select * from R where A=10;

选择条件是“码=值”,采用该表主索引,如果是B+树,层数为L,需要存取B+树中从根结点到叶结点L块,加上基本表中该元组所在的一块,cost=L+1
3+1=4(块)

(3)嵌套循环连接RSR \Join S;
一个块可以装40个R的元组,30个S的元组,但是不知道在内存中分别要存放多少块的R元组和多少块的S元组。只知道外层循环读多少遍,不知道内层循环,所以无法进行估算。

(4)排序合并连接RSR \Join S,区分R与S在B属性上已经有序和无序两种情况。
有序:由于表已经有序了,R和S 都只需要扫描一遍即可。20000/40+1200/30=540.
无序:需要提前将表排序,所以执行时间需要加上对两个表的排序时间。
540+(2*540)+(2 * 540 * log2540\log_2 540

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

SELECT Cname
FROM Student,Course,SC
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Student.Sdept='IS';

试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
语法树:
在这里插入图片描述
关系代数语法树:
在这里插入图片描述
优化后的关系代数语法树:
在这里插入图片描述
4、对于下面的数据库模式:
Teacher(Tno\underline{Tno},Tname,Tage,Tsex);
Department(Dno\underline{Dno},Dname,Tno);
Work(Tno\underline{Tno},Dno,Year,Salary);
假设Teacher的Tno属性,Department的Dno属性以及Work的Year属性上有B+树索引,说明下列查询语句的一种较优的处理方法。
(1)

select * from Teacher where Tsex='女';

在Tsex上没有索引,采用全表扫描方法。
(2)

select * from Department where Dno<301;

B+树索引。
(3)

select * from Work where Year<>2000;

<>操作法表示的是不等于,与!=等效。
B+树索引。按照条件查找,则会有大块数据 满足或不满足条件,就可以不用在判别了,直接输出。
(4)

select * from Work where Year>2000 and Salary<5000;

B+树索引。按照Year索引后,再判断Salary是否满足条件。
(5)

select * from Work where Year<2000 or Salary<5000;

全表扫描方法。
Salary上没有索引,只能全表扫描。

5、对于题4 的数据库模式有如下查询:

select Tname
from Teacher,Department,Work
where Teacher.Tno=Work.Tno and Department .Dno=Work.Dno and Department.Dname='计算机系' and Salary>5000.

画出语法树以及用关系代数表示的语法树,并对关系代数语法树进行优化,画出优化后的语法树。
语法树:
在这里插入图片描述

关系代数表示的语法树:
在这里插入图片描述
优化后的关系代数语法树:
在这里插入图片描述

B+树的特征:
1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
B+树的优势:
1.单一节点存储更多的元素,使得查询的IO次数更少。
2.所有查询都要查找到叶子节点,查询性能稳定。
3.所有叶子节点形成有序链表,便于范围查询。

这次做题复习了一下以前B+树的相关知识,要是不复习的话,都快忘光了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章