4个步骤:查询分析、查询检查、查询优化和查询执行
选择操作的实现
补充:hash索引:适合精确定位,但不适合范围查询、模糊查询
连接操作的实现
注:期末未涉及
e.g.
Q 1 = Π S n a m e ( σ S t u d e n t . S n o = S C . S n o ∧ S C . C n o = ′ 2 ′ ( S t u d e n t × S C ) ) Q_1=\Pi _{Sname}(\sigma_{Student.Sno=SC.Sno\wedge SC.Cno='2'}(Student×SC)) Q1=ΠSname(σStudent.Sno=SC.Sno∧SC.Cno=′2′(Student×SC))
Q 2 = Π S n a m e ( σ S C . C n o = ′ 2 ′ ( S t u d e n t ⋈ S C ) ) Q_2=\Pi_{Sname}(\sigma_{SC.Cno='2'}(Student\Join SC)) Q2=ΠSname(σSC.Cno=′2′(Student⋈SC))
Q 3 = Π S n a m e ( S t u d e n t ⋈ σ S C . C n o = ′ 2 ′ ( S C ) ) Q_3=\Pi_{Sname}(Student\Join\sigma_{SC.Cno='2'}(SC)) Q3=ΠSname(Student⋈σSC.Cno=′2′(SC))
对于第一种情况,设一个块能装10个Student元组或100个SC元组,在内存中存放5块Student元组和1块SC元组,则读取总块数为
1000 10 + 1000 10 × 5 × 10000 100 = 100 + 20 × 100 = 2100 块 \frac{1000}{10}+\frac{1000}{10×5}×\frac{10000}{100}=100+20×100=2100块 101000+10×51000×10010000=100+20×100=2100块
其中, 1000 10 \frac{1000}{10} 101000表示读Student的次数, 1000 10 × 5 \frac{1000}{10×5} 10×51000表示一次读5块,每块10个,决定SC表需要多少个重装的轮回, 10000 100 \frac{10000}{100} 10010000表示学生表不动的时候,SC重装的块数。
可以通过优化提高效率。
要求:理解;会用;规则要背过
连接、笛卡尔积的交换律
连接、笛卡尔积的结合律
投影的串接定律
选择的串接定律
选择与投影操作的交换律
选择与笛卡尔积的交换律
选择与并的分配律
选择与差运算的分配律
选择对自然连接的分配律
投影与笛卡尔积的分配律
投影与并的分配律
典型的启发式规则有:
语法树(考试要会画)