大家好,请看我的问题:
现有微服务A、微服务B,两个服务链接的是不同的数据库而且不在同一个机器上。
微服务A中的数据库人员表(base_user)存放了一万条人员信息,微服务B中需要调用A的接口,将没有调入过的人员列表查询出来(然后在前端勾选后调入到B的sys_user表中)。
我的实现方式是:
首先从B的sys_user中查询出所有的人员id列表,然后通过该id列表调用A的接口,A的接口执行mysql(下面语句省略了分页,实际项目是分页的):
select * from base_user where id not in ('1','2',......)
这种方式在sys_user中人员数量较少的情况下还算可以,但是随着调入人员的增加,A接口的速度越来越慢,因为not in 的id列表太大了。
select * from base_user where id not in ('1','2',此处省略9000个id)
请问大神们,有没有其他的实现方式或者mysql上可以优化的地方呢?
谢谢!
1.分批处理
2.用 JOIN 而不是 IN
3.使用临时表
4.异步处理
5.用缓存