MybaitsPlus在执行批量插入的时候,如果设置了自增序列,那Mybatis为了获取主键id,会在批量插入前去查询主键id,有多少数据里就查询多少次。
可以看到图中SELECT SEQ_BIZ_SNAPSHOT_DATA.NEXTVAL FROM DUAL,查询了86次,也就是进行了86次IO,原本一次IO就搞定的事情,它给我多整了86次,效率下降了N倍。
下图是Mybatis的源码,可以看到如果设置了自增序列,也就是在entity上加了注解@KeySequence("SEQ_BIZ_SNAPSHOT_DATA")
进入到genKeyGenerator方法中可以看到组装查询语句的那条语句
解决方案:不适用@KeySequence("SEQ_BIZ_SNAPSHOT_DATA")