「數據庫優化」插入更新數據的方式


「數據庫優化」插入更新數據的方式

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語句執行數據的插入更新操作比較好。


分享到:


相關文章: