关系型数据库三大物理链接的一点猜想

首先声明这篇文章目前只是猜想,当不得真,等待有空时再去证实或排除谬论

三大物理链接

1:是什么
	1.1:是sql执行过程的实际执行方式,所有的查询语句都会以这三种方式物理执行.对两张选中的表的信息进行处理,选出符合条件的记录,返回去给调用者.分为嵌套循环链接,排序合并链接,哈希链接
2:为什么
	2.1:需要选出两张表中,有交集的部分
3:怎么做
	3.1:暂时不知道怎么指定强制使用那种模式,只听说in是使用哈希链接,exists是使用嵌套循环(所有按理来说大数据量in要比exists快些的)

嵌套循环

1:是什么
	1.1: 数据库链接方式的一种
2:为什么
	2.1: 最简单最容易想到的方式
3:怎么做
	3.1:假设指定了A表,B表.外层循环A表,再套一层循环B表,判断A表的这条记录是否与B表的这条记录相等.时间复杂度为o(A*B),如果B表有索引,时间复杂度应该为o(AlogB)(存疑)

排序合并

1:是什么
	1.1: 数据库链接方式的一种
2:为什么
	2.1: 专门针对输入两表指定字段有序的情况,例如两个表的判断条件列都有索引
3:怎么做
	3.1: 假设指定了A表,B表.再定义两个指针Pa,Pb,分别指向两个表的值.这种方式就一个循环,每次判断Pa指向的值是否与Pb指向的值相等.如果不相等,小值的那个指针就往后移一个位置.再与大值比较.
	就像人的两条腿一样,一前一后就把两张表走完了.时间复杂度是o(A+B)

哈希链接

1:是什么
1.1: 数据库链接方式的一种
2:为什么
2.1: 专门针对输入两表数据量大且没有顺序的情况
3:怎么做
3.1: 假设指定了A表,B表,先将A表的指定字段哈希到内存中,再将B表的指定字段哈希一下,判断是否哈希值相等.这种方式利用了哈希表的常数级时间复杂度,所以时间复杂度就是o(A+B)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值