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重装的块数。
可以通过优化提高效率。
要求:理解;会用;规则要背过
连接、笛卡尔积的交换律
连接、笛卡尔积的结合律
投影的串接定律
选择的串接定律
选择与投影操作的交换律
选择与笛卡尔积的交换律
选择与并的分配律
选择与差运算的分配律
选择对自然连接的分配律
投影与笛卡尔积的分配律
投影与并的分配律
典型的启发式规则有:
语法树(考试要会画)