查看更多
当前 - 选择题 - 关系数据库
中等
单选题
2018年11月第5题
#数据库系统
#关系数据库
#第二版教材
#凯恩建议必须掌握

在关系R(A1,A2,A3)和S(A2,A3,A4)上进行关系运算的4个等价的表达式E1、E2、E3和E4如下所示:
E1=πA1,A4(σA2<2018A4=95(RS))E_1 = \pi_{A_1, A_4}(\sigma_{A_2 < 2018 \land A_4 = '95'}(R \bowtie S))
E2=πA1,A4(σA2<2018(R)σA4=95(S))E_2 = \pi_{A_1, A_4}(\sigma_{A_2 < 2018}(R) \bowtie \sigma_{A_4 = '95'}(S))
E3=πA1,A4(σA2<2018R.A3=S.A3A4=95(R×S))E_3 = \pi_{A_1, A_4}(\sigma_{A_2 < 2018 \land R.A_3 = S.A_3 \land A_4 = '95'}(R \times S))
E4=πA1,A4(σR.A3=S.A3(σA2<2018(R)×σA4=95(S)))E_4 = \pi_{A_1, A_4}(\sigma_{R.A_3 = S.A_3}(\sigma_{A_2 < 2018}(R) \times \sigma_{A_4 = '95'}(S)))
如果严格按照表达式运算顺序执行,则查询效率最高的是表达式(__)。

问题(1)
正确答案B
凯恩解析

本题考察的是关系代数表达式的等价变换与代价优化原则
核心原则是:尽可能将选择(σ)下推到越接近数据源越好,尽可能避免先做笛卡儿积(×),优先使用连接(⋈),并减少中间结果规模。题干四式在语义上应等价;常见等价关系为:E1 与 E2 等价(选择下推到连接两端)E3 与 E4 等价(连接转化为对笛卡儿积的选择,并尽量下推选择)。在“严格按写出的运算顺序执行”的前提下,比较中间结果规模与操作类型,E2的执行代价最低。
A选项 E1:先做连接 R ⋈ S,再整体选择 σ{A2<2018 ∧ A4='95'}。先连接后选择会产生较大的中间结果,因为连接在未过滤前参与元组更多,随后再过滤,代价高于先选择再连接,所以不是最优。
B选项 E2:先对 R 与 S 分别执行选择 σ{A2<2018} 与 σ{A4='95'},再做连接,然后投影。这是标准的“选择下推 + 再连接”策略,能显著缩小参与连接的关系规模,减少连接代价与中间结果,严格按序执行时查询效率最高,因此正确。
C选项 E3:先做笛卡儿积 R × S,再一次性做包含等值连接条件与选择条件的总选择,最后投影。笛卡儿积在未约束时会产生规模巨大的中间结果,随后再用σ过滤,代价通常最高,因此最差。
D选项 E4:先分别下推选择到 R 与 S,随后做笛卡儿积,再用 σ{R.A3=S.A3} 实现等值连接。相比 E3,已经做了部分优化(先选择),中间结果小于 E3;但仍然显式执行了笛卡儿积再过滤为连接,通常劣于直接连接的 E2,因此不是最优。
综上,按照代价最小化与中间结果最小化的优化原则,选择 B(E2)。

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有