MySQL跨表数据同步优化
应用场景描述
有两张设备在线状态表,其中一张记录心跳时间戳(
tb1
),另一张做异地数据同步(tb2
).
原始方案
> 查询tb1所有数据,循环(select all)
>> 判断该条数据对应的设备是否依然在线
>>> 若在线
>>>> 查找tb2中是否存在该设备ID(select limit 1)
>>>>> 若存在,更新(在线:true, update 1)
>>>>> 若不存在,插入(在线:true, update 1)
>>> 若不在线
>>>> 查找tb2中是否存在该设备ID(select limit 1)
>>>>> 若存在,更新(在线:false, insert 1)
>>>>> 若不存在,插入(在线:false, insert 1)
>>>> 删除tb1中已离线的记录(delete)