Project #3 – Query Execution
本文最后更新于85 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

历经半个多月的编写,终于也是把p3写完了,目前p3给我的感受比p2要好很多(因为p2的整个大文件的构建实在是非常折磨,对于我这种没有什么编码经验的c++新手来说非常困难,以至于出现了对于一个功能看半天的情况)。

下面是对于p3的一些自己踩坑的经历和实际体验:

p3主要是计划查询的构建,445的官方文档给出了明确的构建计划,在整个p3的计划中,我们只需要完成简单的读写查询就好了,主要分为:

这三个任务,由于这些文件的头文件都给出了已经实现好的辅助函数,实际上p3的任务量远远小于p2

t1:

seqscan、insert、delete、indexscan,非常好理解,遍历扫描,插入,删除,索引查找扫描,内部只要注意函数初始化的细节,还有一些指针的调用问题,辅助函数会帮我们解决问题。

t2:

Aggregation、NestedLoopJoin、NestedIndexJoin

分组,遍历连接,利用索引连接,其实在lecture中都讲过,其中遍历查找的效率较慢,需要先遍历完所有的左表和右表,寻找到合适的条件直接塞进去,而索引查找就可以利用索引查找右表的内容,这样就比loop快很多。

t3:
sort、limit、topn

sort:非常简单,自定义一个比较器,子查询器遍历next,另外开一个vector,然后sort一下就好(把比较器塞进去)

limit:获取需要限制输出的语句条数,next(),然后需要限制的语句num++就好了

topn:如果你力扣刷的多一点,简直是非常自然而然的就能想到,动态维护一个列表,按照自定义排序,完完全全就是一个MaxHeap/MinHeap的实际应用,直接自定义比较器,塞到实现好的heap里面,完成。

整个p3做下来的进度也比p2快了不少,等笔者把几个小问题修一下就通关,马不停蹄开下一个pj

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇