最近处理一个很久的以前的老项目的优化,其实本身的问题很简单,就是原有的设计太无语了,保存一次要10-20分钟。优化对比测试时坑死人了。
问题:将插入数据库的操作写在循环里,每执行一次插入就要连接一次数据库,io耗时非常巨大;删除原有角色权限关联表和权限表的信息时,居然分为4步,4步也没问题,关键他把数据的查找操作后面的条件竟然是in(a,b,c,...,z)这种写法,速度慢了10倍,
解决:将所有的权限信息的插入操作写到循环的外面,并用批量操作进行一次插入
用一条sql语句直接将两个表的相关信息删除