【第九章】 关系查询处理和查询优化

在这里插入图片描述
2、
(1)全表扫描算法代价估算:20000/40=500块

(2)选择条件是“码=值”,采用该表主索引,如果是B+树,层数为L
需要存取B+树中从根结点到叶结点L块,加上基本表中该元组所在的一块,总供需要:L+1
3+1=4块
B+树的具体复习参考了以下文章:

https://www.cnblogs.com/hyunbar/p/11185095.html

(3)嵌套循环连接算法代价估算:
容M,N分别代表R,S占用的块数
总共需要块数为:M+M*N/(K-1)
连接操作使用的内存缓冲区块数为K,分配K-1给外表,本题中没有给出K
故最终结果为:500+500x40/(K-1)

(4)排序-合并连接算法代价估算:
排序好:R和S只读取一遍,20000/40+1200/30=540
未排序:则加上排序代价,对于包含540个块的文件排序的代价大约是2×540+2×540×(log以2为底540的对数)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(1)最优策略:全表扫描
(2)最优策略:全表扫描
(3)最优策略:全表扫描
(4)最优策略:利用Year属性的B+树索引
(5)最优策略:全表扫描

在这里插入图片描述
在这里插入图片描述
优化后:
在这里插入图片描述
总结:这一部分感觉难度不是很大,主要有些问题可能在于优化查询书这一部分,老有一种飘飘的感觉,不像是做计算题1+1=2,这种都是很确定,但在优化的过程中很怕自己的想法会和答案优化规则有出入。所以下面再强调一下优化规则吧:

1.选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条
2.把投影运算和选择运算同时进行(如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系)
3.把投影同其前或其后的双目运算结合起来
4.把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算
5.找出公共子表达式

原创文章 25 获赞 20 访问量 9730

猜你喜欢

转载自blog.csdn.net/Freedomhy/article/details/105831274