欢迎光临散文网 会员登陆 & 注册

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

2022-11-26 13:55 作者:任何事人挺好的认同  | 我要投稿

励志当最强课代表的我来给大家总结总结👍👍👍

为什么《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





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

分享到微博请遵守国家法律