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

前端之家收集整理的这篇文章主要介绍了我可以始终使用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

原文链接:https://www.f2er.com/mysql/532027.html

猜你在找的MySQL相关文章