数据库作业19:关系查询处理和查询优化

数据库作业19:关系查询处理和查询优化
2、
(1)全表扫描算法代价为:20000/40=500块
(2)索引扫描,选择条件是“码=值”,采用该表的主索引,如为B+ 树,层数为L,需要存取B+树中从根结点到叶结点L块,再加上基本表中元组所在的那一块,所以cost=L+1,即为3+1=4块。

B+树相关知识:https://blog.csdn.net/wl044090432/article/details/53423333

(3)嵌套循环连接算法的代价 cost=Br+BrBs/(K-1)。
(设连接表R与S分别占用的块数为Br与Bs,连接操作使用的内存缓冲区块数为K,分配K-1块为外表。如果R为外表,则嵌套循环法存取的块数为Br+BrBs/(K-1))。
该题中没有给出K的值,故最终结果为20000/40+(20000/40)*(1200/30),即为500+500x40/(K-1)。
如果需要把连接结果写回磁盘,则
cost=Br+BrBs/(K-1) +(Frs *Nr *Ns)/Mrs
Frs为连接选择率,表示连接结果元组数的比例,Mrs是存放连接结果的块因子,表示每块中可以存放的结果元组数目。N是元组数目,则Nr是R表中元组数目,Ns是S表中元组数目。(有一说一,是我看书不仔细,还是书有问题,书上公式的每一个字母都认识,就是字母所代表的含义书上不说明白)
(4)排序-合并连接算法(这个题,把我整懵了,不确定的答案就不写了)
排好序:如果连接表已经排好序,则cost=Br+Bs+(Frs * Nr Ns)/Mrs
未排序:在排好序连接的代价上,加上排序的代价,对于包含B个块的文件排序的代价大约是(2B)+(2B
log2B)

数据库作业19:关系查询处理和查询优化

3、
数据库作业19:关系查询处理和查询优化
优化后
数据库作业19:关系查询处理和查询优化

数据库作业19:关系查询处理和查询优化
(1)Tsex没有索引,全表扫描
(2)Dno上有B+ 树索引,索引扫描
(3)Year上有B+ 树索引,但查找不为Year不为2000的,还是全表扫描吧,若用索引扫描的话,就跟翻着字典目录找不为“二”这个字的字,每次找都翻目录,有些慢
(4)Year上有B+树索引,根据索引扫描找出Year>2000的一组元组指针,再从这些元组中全表找salary<5000的
(5)Where后的条件是 或的关系,还是采用全表扫描吧。
数据库作业19:关系查询处理和查询优化
数据库作业19:关系查询处理和查询优化
数据库作业19:关系查询处理和查询优化

数据库作业19:关系查询处理和查询优化


画图时,先是采用常用OneNote,由于特殊符号不是很全,又换到Word上,打开Word后,想算了吧,还是手画吧,好久没动过笔了,所以这次的图是手画的。长时间不碰笔,握笔姿势都有点问题了。 这的题,感觉有些信息没有说明白,需要自己估摸,而且,这部分的内容,网上挺少的,一些内容还得慢慢消化。