数据库作业19

第九章: 关系查询处理和查询优化 课后习题

  1. 假设关系R(A,B)]和S(B,C,D)情况如下:R有20000个元组,S有1200个元组,一个块能装40个R的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。
    (1)R上没有索引,select * from R;
    简单地全盘扫描
    解:20000/40=500(次),读写应该是一共1000次
    (2)R中A为主码,A有三层B+树索引,select * from R where A=10;
    扫描索引算法:通过索引先找到满足条件的元组指针,再通过元组指针在表中检索。
    解:cost=L+1,L是B+树的层数
    一个块能装40个R的元组,层数最小的情况:
    20000/40=500
    500/40=12.5
    13<40…刚发现好像没必要写这个
    也就是三层,L=3
    所以需要4次
    (3)嵌套循环连接 R ⋈ S R \Join S RS
    嵌套循环算法
    Br=20000/40=500
    Br=1200/30=40
    选择S为外表比较好
    所以读操作需要:40+5000×40=200040(次)
    写操作,比起来差很多,忽略掉,所以大约要200000次。
    (4)排序合并连接 R ⋈ S R⋈S RS,区分R与S在B属性上已经有序和无序两种情况。
    有序:40+500=540(次)
    无序:加上排序需要的次数,大概。540*4=2160(次)大约

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

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

试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
在这里插入图片描述

  1. 对于下面的数据库模式:
    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=‘女’;
    Tsex属性没有索引,而且不是码
    全盘扫描算法
    (2)select * from Department where Dno<301;
    Department的Dno属性是码,且有B+树索引
    索引扫描算法
    (3)select * from Work where Year<>2000;
    不是码,而且有B+树索引,year属性在有序情况下是很好查询的。
    索引扫描算法
    (4)select * from Work where Year>2000 and Salary<5000;
    先索引查出符合year条件的,再判断Salary属性是否满足
    索引扫描算法
    (5)select * from Work where Year<2000 or Salary<5000;
    Salary属性没有索引
    全盘扫描算法

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

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

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

在这里插入图片描述

  • 2
    点赞
  • 2
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值