工作中遇到一个问题,在进行导入操作时,将大量数据通过excel导入至数据库中时,性能奇差,导入200条数据已是极限,已经远远达不到预期效果,经笔者解决后效率得到大幅提升,由200-300条数据死机到10s内导入2000条以上,基本达到业务要求,今日便与各位分享一下各中心得与问题。
基本业务逻辑:
此功能为导入学生信息,导入的学生信息可以为新增数据,也可以为已有数据(根据身份证判断),导入的学生信息包括学生个人信息,学生户籍地、实际居住地信息,学生专业信息,导入时同时还有对未注册学生进行注册账户操作,在导入时记录log
原有操作逻辑:
从excel读取每一条要导入的dataList ,遍历dataList,在每一条数据中进行如下操作
一、 拿到id判断是插入还是更新,如为更新操作,则省略部分字段校验的字段与更新,插入操作则对每个字段按规则进行校验并创建学生账号。
二、根据数据去数据库中查询户籍地信息是否正确,此处学生的户籍地信息分为省,市,区,具体地址四个字段,主要依据行政区划表查询省市区是否对应,实际居住地逻辑于此相同。
三、学生专业信息包含文化层次、报名方向,报名层次,专业四个字段,而学生信息中包含第一志愿与第二志愿,志愿信息由报名方向,报名层次,专业组成,每一条志愿都须去招生计划表中查询招生计划是否存在,