用全删全增代替比较更新

最近碰到一个需求,需要每天每间隔一段时间,就刷新一下报表统计订单数据,然后数据是按照天来做统计的,由于统计的是每个商家每天的订单数据,所以一天里会有很多条商家订单数据被统计进报表,所以入库逻辑应该这样设计,统计数据进报表时,先看下该商家的数据入库了没有,如果没有,就做数据初始化,如果当天商家的数据已经被初始化入库了,那么就只能做更新了。

如果按照常规的做法,应该是先统计出所有商家的订单统计集合,然后遍历这个集合,搜索这个商家在当天有没有数据入库了,如果没有,则为这个商家做初始化数据操作,也就是新增操作,如果有,则根据搜出来的主键id做修改操作。这里单单想想,就觉得在一个循环里做了好多事,循环里查数据库,循环里插入数据或修改数据,在循环里查数据库这种操作,只要能避免,都尽量去规避。

所以想了想,不管这个商家的数据有没有被初始化,当天的情况下,这个商家的订单统计数据也只会有一条,修改操作也只不过是做值覆盖,那么完全可以使用全删全增这种思路,全删是批量删,而全增,也用批量新增的方法,完全不用开什么循环去做判断。

PS:这里只是分享一个思路,具体情况还是根据业务来码代码比较靠谱,当然了,这思路如果能有帮助是最好的。

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/111052406