我这里有个需求,
本地数据库(一个):
一个表user_local,
远程数据库(共两个库,五个表,)所有信息通过uid关联
一个数据库(user_data_a)中只有一个表user_basic,为所有用户的基本信息,
另一个数据库(user_data_b)中其它四个表分为两类,
一类(其中两个表,user_profile_active和user_profile_not_active)用来存放用户档案,一个表为活跃用户,另一个表为非活跃用户,
另一类表(另外两个表user_ext_info_active和user_ext_info_not_active)用来存放用户其它信息,一个表也是活跃用户,另一个表是非活跃用户,
例如,
user_basic中某个uid的记录如果不在user_profile_active,那么就在user_profile_not_active中,
如果不在user_ext_info_active中,那么就在user_ext_info_not_active中
理论上来说,active的对应active的,not_active的对应not_active的,
现在的需求是,以user_basic为主,去那两类表(共四个)中获取用户对应的信息的某几个字段,然后拼成一条记录,写入到本地user_local表中,大约有80多万条记录,球大神指点如何处理,才能避免在循环中查询数据库,才能不造成内存溢出,超时~~跪求呀
框架为thinkphp5.1
殘留の回憶2019-06-27 22:46:04
如果你mysql数据性能够强大,可以写联表操作,一条语句搞定,但的确很容易造成超时导致内存溢出,建议分开操作吧,这个没什么捷径一张表就80万数据如果这几张表都联起表来查询 数据大的可怕,还是老实点先操作完user_profile_active和user_profile_not_active这两张数据表,完成了再操作后面两个表user_ext_info_active和user_ext_info_not_active