关系代数本身是一套描述性的查询数学语言(选、投、连、除、并、差、交等),它并不直接“执行”查询,但通过代数等价变换和优化策略,可以显著提升关系数据库系统的检索效率。下面从原理到实践说明“关系代数怎样提升检索效率”。
关系代数优化基于代数等价律:
同一个查询结果,可以用多种代数表达式表示,但代价不同。
目标:
在语义不变的前提下,减少中间结果大小、减少磁盘 I/O、减少连接次数。
规则: [ \sigma_{条件}(R \times S) \equiv (\sigma_{条件1}®) \times (\sigma_{条件2}(S)) ]
好处:
✅ 示例:
SELECT *
FROM Student, SC
WHERE Student.Sno = SC.Sno AND SC.Grade > 90;
优化为:
σ(Grade>90)(SC)规则: [ \pi_{属性}(R \bowtie S) \equiv \pi_{属性}( \pi_{相关属性}® \bowtie \pi_{相关属性}(S) ) ]
好处:
多表连接时顺序极其重要:
[ (R \bowtie S) \bowtie T \neq R \bowtie (S \bowtie T) \quad \text{(代价不同)} ]
原则:
[ R \bowtie_{条件} S \ll R \times S ]
笛卡尔积是指数级灾难,连接带条件可大幅剪枝。
[ \sigma_{A>1}(\sigma_{B<2}®) \equiv \sigma_{A>1 \land B<2}® ]
减少扫描次数。
关系代数层虽不直接管索引,但:
优化器会选:**
代数最优 + 索引最优**
数据库执行流程:
关系代数处在“第2–3步”,决定了整体上限。
关系代数通过等价变换,把“先算后筛”变成“先筛后算”,通过减少数据量和计算规模来提升检索效率。
如果你愿意,我可以用:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。