我可以始终使用INSERT…ON DUPLICATE UPDATE进行简单的更新/插入吗?

(MYSQL)是否存在明显的性能差异,或其他原因不使用INSERT … ON DUPLICATE UPDATE sql通过PK /插入新内容进行更新?

最佳答案
不,没有.

INSERT ON DUPLICATE KEY UPDATE将定位记录并更新它,就像简单的UPDATE一样.

实际上,这只是一个UPDATE,如果UPDATE失败,则后面是INSERT.

INSERT ON DUPLICATE KEY UPDATE可以是分组更新的更快替代方法(当您的源表的每个键包含多个记录,并且希望每个记录增加一次目标表时).

如果每个键的值很少,则此查询:

INSERT
INTO    t_target
SELECT  target,cnt
FROM    t_sparse d
ON DUPLICATE KEY UPDATE
        t_target.cnt = t_target.cnt + d.cnt

将比这更有效:

INSERT
INTO    t_target
SELECT  target,cnt
FROM    (
        SELECT  target,SUM(cnt) AS cnt
        FROM    t_sparse di
        GROUP BY
                target
        ) d
ON DUPLICATE KEY UPDATE
        t_target.cnt = t_target.cnt + d.cnt

有关更多详细信息,请参见我的博客中的这篇文章:

> Efficient INSERT ON DUPLICATE KEY UPDATE

相关文章

在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信...
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.c...
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时...
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括...
navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...