场景一、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