订阅本站

MySQL存在则更新方法对比

huangdijia 发表于 2011-10-31 分类 MySQL数据库技术, PHP/PHP框架 | 发表评论

MySQL存在则更新方法一般有以下几种

  1. SELECT + UPDATE
  2. REPLACE INTO
  3. INSERT INTO … ON DUPLICATE KEY UPDATE

SELECT + UPDATE 是最传统的一个,要对数据库进行两次操作。
REPLACE INTO 和 INSERT INTO ON DUPLICATE KEY UPDATE都是一次操作,表面看起来功能差不多,REPLACE INTO 还优胜些,因为要短一些。
但是两者还是有点区别的:
REPLACE INTO 等于 DELETE + INSERT INTO,如果表的主键是一个自增ID,那问题就来了,REPLACE INTO 会导致主键的值越来越大,如果溢出,将会导致数据无法插入。
而INSERT INTO ON DUPLICATE KEY UPDATE的实质却是 if(EXISTS) UPDATE else INSERT INTO 的操作。
两者的效率都不怎么样,道理很简单,因为一个人干了两个人的活嘛。

[使用Ctrl+回车快速提交]