记录一下bug解决方案。
今天遇到线上突然某个接口访问不了,测试和本地都好好的。找了半天,看了半天,也没有找到问题在哪,纳闷的很。最后看了半天的代码,把目光锁定在了
for (DeviceUser deviceUser2 : list) {
AccountUser use = accountUserService.selectByPrimaryKey(deviceUser2.getUserId());
deviceUser2.setUserName(use.getAccountName());
}
每一个list中的元素都会去selectByPrimaryKey,导致MySQL数据库资源严重浪费,前端等了几十秒就不等了。看似接口用不了,其实卡在了数据库一直在连接和断连。
解决方案:
selectAll();
全部拿出来,再逻辑比较就行了。
延伸:
遇到这种比较查询的问题,如果用selectByPrimaryKey,前期数据少的时候可能没有问题,数据一旦稍微多起来就玩球了。分享一下,告诉自己以后要尽量远离selectByPrimaryKey!!!