场景一、mysql 中 left join 和 子查询 效率的对比

表A 大概30万数据,需要关联的表B,B表大概几千条,因为首先要对表A 和 表B 做一些处理,所以

两种写法

select tab_a.id,XXXXXXXX  from

( select   xxxxxx  from  A )  tab_a  LEFT  JOIN (SELECT XXXX FROM B)  tab_b   on   tab_a.col =  tab_b.col   

or

select tab_a.id,

(select tab_b.xxx (SELECT XXXX FROM B) tab_b where tab_b.col = tab_a.col )

。。。。。。

from

( select xxxxxx from A ) tab_a;

因为 两张表的col字段都是经过计算了,所以都没有索引,经过比对

子查询大概用时5S多,left join 差不多17S 左右

场景二、mybatis批量插入

              数据量大概30W,

             方法1.直接 for循环,每次插入一条,耗时 10分种左右

             方法2、mybatis中 foreach,每次批量一万条update, 只要1分多,当然批量更新需要注意,一次性不能推送太多的sql,不能超过sql最大限制,另外jdbc连接信息上&allowMultiQueries=true

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐