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

本文深入探讨数据库操作的成本计算,包括全表扫描、索引扫描、嵌套循环连接及排序-合并连接算法的代价分析,同时提供了优化策略和具体实例。

在这里插入图片描述
2、
(1)全表扫描算法代价为:20000/40=500块
(2)索引扫描,选择条件是“码=值”,采用该表的主索引,如为B+ 树,层数为L,需要存取B+树中从根结点到叶结点L块,再加上基本表中元组所在的那一块,所以cost=L+1,即为3+1=4块。

B+树相关知识:https://blog.youkuaiyun.com/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)

在这里插入图片描述

3、
在这里插入图片描述
优化后
在这里插入图片描述

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

在这里插入图片描述


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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值