为什么阿里巴巴出的《Java开发手册》中禁止在数据库中做多表JOIN呢?

励志当最强课代表的我来给大家总结总结👍👍👍
为什么《Java开发手册》中禁止在数据库中做多表JOIN呢?
视频内容:
1️⃣ join✍️
2️⃣简单嵌套循环📄
视频内容:
1️⃣ join✍️
因为 join的效率比较低 ,MySQL 是使用嵌套循环的方式来实现关联查询的。
简单的说就是通过两层循环,用第一张表做外循环,第二张表做内。外循环的每一条记录都要跟内循环当中的所有记录做比较,符合条件就输出。
而具体到算法上主要有三种,简单的嵌套循环、基于缓存的嵌套循环以及基于索引的嵌套循环。而这三种效率其实都不高。
00:05

2️⃣简单嵌套循环📄
最差的就是简单嵌套循环,它的做法简单粗暴,就是全量扫描连接两张表的数据进行两对比。
复杂度可以简单的认为是 on 方。算法是基于索引的嵌套循环,当内循环的表当中用到的字段可以用索引的话,那么就会用索引进行查询数据。
因为索引是 B 加数的,所以可以简单的认为这个时间复杂度是 on log N 那基于缓存的嵌套循环这种算法其实是引入了 buffer 会提前把 Y 循环当中的数据放到多个 join buffer 当中,内循环的每一行都和多个 buffer 的整体数据进行做比较,从而减少内循环的次数。
复杂度你可以简单的理解为 on 乘以 M 这里的 M 指的就是8分的个数。虽然 MySQL 已经尽可能的在做优化了,这几种算法的复杂度其实还都挺高的。
00:45
