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

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西代数表达式优化算法对原始的语法树进行优化
在这里插入图片描述
在这里插入图片描述
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没有索引
全表扫描

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值