背景
最近需要每天从A库拉取5W+数据,然后需要插入B库,而且插入的过程,要先判断是否需要插入,判断后再进行插入或更新操作。
问题
如果每条数据都要先进行数据库查询看库中有没有数据再进行更新或插入操作,就会多出5W+的查询操作,每次又涉及到数据库连接的断开和连接,这样就导致性能的下降和时间的提高。
解决办法
使用 ON DUPLICATE KEY UPDATE 可解决此问题,将判断逻辑交由数据库去处理,而只需一次连接便可完成原先两次连接的操作。
举一反三
由于之前没用过这个语句,我也不知道有这种语句存在,在没有过来人指点的情况下,自己怎么样发现这个语句呢?一是平时的积累(看书,逛博,逛官方文档等),二是自己使用过类型的功能要能够进行联想,我就拿发现这个语句的思路举个例子。
我之前用过 insert ignore into ,于是联想到update操作会不会也有 类似(其实现在想想,这就是联想啦,遇到问题先想想自己有没有遇到类似的为题)的?于是顺腾摸瓜查找下去,就找到了这个 on duplicate。