mysql中的连接运算_数据库-连接运算

本博客会陆续写一些和操作数据有关的基本算法。内容都很基础,算是帮助大家回顾记忆。也可以给和我一样,刚接触数据库,数据挖掘等技术的同学,提供一个迅速了解基本算法的文档。我认为多多体会基本算法,不光是为了编程、性能优化,还可以学习到很多分析解决问题的方法。好了,不多废话,欢迎大家来评论;如文中有错误,也欢迎大家来拍砖哈~

我们查询数据时经常会用到联合查询

select r,s from R join S on R.id=S.rid

这个连接是怎么运算的呢?代价有多大呢?我们来分析一下。先来看下运算结果集的大小:若R∩S=空,则连接为笛卡尔积。 若R∩S是R的码,可知s的一个元组至多与r的一个元组连接。因此连接结果集的元组数不会超过s中的元组数。 若R∩S既不是R的码也不是S的码,令R∩S={A},设S的元组数ns,V(A,s)为S中属性A所具有的不同值的数目,则ns/V(A,s)是S关系中属性A的值给定情况下平均的元组数目,则在r连接s的结果集中有nr*ns/V(A,s)个元组。

首先介绍最基础的连接方式:嵌套循环连接。要计算r和s的theta连接,看伪代码:

for each 元组tr in r do

begin

for each 元组ts in s do

begin

测试元组对(tr,ts)是否满足连接条件theta

如果满足,把tr*ts加到结果中

end

end

若元组对数目是nr*ns,对于关系r中的每一条记录,我们必须对s做一次完整扫描。最好的情况,内存空间容纳两个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值