「数据库优化」插入更新数据的方式


「数据库优化」插入更新数据的方式

MySQL操作中当记录不存在时insert,当记录存在时update。

  1. 传统的操作方法需要使用三条语句
<code>1. select * from table where id = xxx  # 判断是否存在数据
2. 若不存在,则执行insert into table set name =ss
3.若存在,则执行update table set name =xss/<code>

该方法效率低下。

  1. 效率比较高的两种数据操作方式。
  • INSERT 中 使用ON DUPLICATE KEY UPDATE
<code>insert into table set uid = 123456 ,apply_id = 521,color ='D1',created_at = NOW(),updated_at=NOW() on duplicate key update color='D1' ,updated_at = NOW();/<code>

其工作原理是:当插入的数据与表中记录的数据的主键或唯一索引产生重复值,则就会执行旧行的更新;否则执行插入操作。如果行作为新记录被insert,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。

  • 使用REPLACE语句
<code>replace into table set uid=121313,apply_id=311,color=‘A1',created_at=NOW(),updated_at=NOW()/<code>

其工作原理是:当表中存在数据时,则先执行delete操作,再执行insert操作;如果不存在重复数据,则执行insert操作。但该方法会导致自增主键id容易出现不连续性。

综合考虑:使用ON DUPLICATE KEY UPDATE语句执行数据的插入更新操作比较好。


分享到:


相關文章: