关系代数优化

数据库 – 关系代数优化(语法树优化)

关系代数优化是指通过对关系代数表达式的等价变换操作来提高数据库的查询效率。

关系代数有5大基本操作:包括并( Union,U ),差 (Difference , - ),笛卡尔积( X ),投影( project,∏),选择( select , σ )。
其他操作:交(Intersection , ∩ ),连接( ⋈ ),除( ÷ );

代数优化遵循的原则是:先做选择,运用投影去除多余属性等等。
优化算法:语法树(尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值)。

一,在优化过程中使用到的等价变换规则如下

1. 连接,笛卡尔积的交换律
设E1和E2是关系代数表达式,F是连接运算的条件
在这里插入图片描述

2. 连接,笛卡尔积的结合
在这里插入图片描述

3. 投影的串接定律
A1…An,B1…Bn为表的属性。
在这里插入图片描述

4. 选择的串接定律
在这里插入图片描述

5. 选择与投影的交换
在这里插入图片描述

6. 选择与笛卡尔积的交换
在这里插入图片描述
7.选择与并的交换
在这里插入图片描述
8.选择与差的交换
在这里插入图片描述
9. 投影与笛卡尔积的交换
在这里插入图片描述
10.投影与并的交换
在这里插入图片描述

二,关系代数表达式优化步骤

1、构造查询树
第一步:把用高级语言定义的查询转换为关系代数表达式
★ 以 SELECT子向对应投影操作,以FROM字向对应笛卡尔积以 WHERE子句对应选择操作,生成原始查询树
★ SQL语句转化为原始查询树
第二步:把关系代数表达式转换为查询树。

注: 查询树是一种表示关系代数表达式的树形结构。在一个查询树中,叶子结点表示关系,内结点表示关系代数操作。查询树以自底向上的方式执行:当一个内结点的操作分量可用时,这个内结点所表示的操作启动执行,执行结束后用结果关系代替这个内结点。

2、利用等价转换规则反复地对查询表达式进行尝试性转换,将原始的语法树转換成“优化”的形式
<1> 对每一个选择,利用等价变换规则4~9尽可能把它移到树的叶端。目的是使选择操作尽早执行
<2> 对每一个投影利用等价变换规则3,9等的一般形式尽可能把它移向树的叶端。目的是使投影操作尽早执行
<3> 对每个叶节点加必要的投影操作,以消除对查询无用的属性。
<4> 如果笛卡尔乘积后还须按连接条件进行选择操作,可将两者组合成连接操作
选择下沉,投影随后

---------------------------------------------------------------------------------------------------------------------------
应用举例
从数据库中找出选修了课程名为“IS”的学生姓名
Select Cname
From Student, Course, SC
WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno AND Student.Sdept =’IS’;

1.构造查询树
查询语句转关系代数表达式为:∏Cname(σStudent.Sdept=’IS’(Student ⋈ Course ⋈ SC))
在这里插入图片描述
2.利用等价代换原则进行优化
(1)
在这里插入图片描述
(2)
在这里插入图片描述
(3)
在这里插入图片描述
优化完毕。

  • 16
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值