(MYSQL)是否有任何显着的性能差异,或其他原因不使用INSERT ... ON DUPLICATE UPDATE
SQL更新通过PK /插入新的东西?对于简单更新/插入,我可以始终使用INSERT .... ON DUPLICATE UPDATE吗?
3
A
回答
3
不,没有。
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
请参阅本文中我的博客更多的细节:
0
我想给出一个更细致的答案。这取决于DBMS的实施。尽管如此,从经验来看,我可以告诉你,大多数DBMS对INSERT ... ON DUPLICATE UPDATE
都有很好的支持。
事实上,它往往可以带来更好的性能,使用自DMBS可以组这些命令,从而减少工作要做INSERT ... ON DUPLICATE UPDATE
。这是与MySQL的情况下,你经常可以看到一些速度10〜20%的增幅比较简单的插入+更新策略,没有任何形式的配料。总的来说,我会推荐INSERT ... ON DUPLICATE UPDATE
,因为它更简单易用,代码更容易维护,并且通常会带来额外的速度优势。
相关问题
- 1. INSERT ... ON DUPLICATE UPDATE
- 2. PDO:使用mysql检查更新或插入的记录INSERT ON DUPLICATE KEY UPDATE
- 3. 如何使用mongodb-insert-on-duplicate-key-update?
- 4. MySQL嵌入INSERT与ON DUPLICATE KEY UPDATE
- 5. 使用ON DUPLICATE KEY UPDATE更新插入查询已存在row
- 6. 使用SET选项可以使用ON DUPLICATE KEY UPDATE和INSERT查询吗?
- 7. 我可以在多个字段上使用ON DUPLICATE KEY UPDATE吗?
- 8. 我可以在'insert ... on duplicate update ...'语句中重用绑定变量吗?
- 9. 是否有可能在INSERT ON DUPLICATE KEY UPDATE中使用'join'
- 10. MySQL INSERT ... SELECT ... ON DUPLICATE KEY UPDATE增量
- 11. 将参数传递给INSERT ..ON DUPLICATE UPDATE
- 12. INSERT SELECT ON DUPLICATE UPDATE的SQL语法
- 13. INSERT INTO ... ON DUPLICATE KEY UPDATE增量语法
- 14. ON DUPLICATE KEY UPDATE坏回应
- 15. MYSQL ON DUPLICATE KEY UPDATE问题
- 16. 我可以在PHP for循环中使用ON DUPLICATE UPDATE KEY
- 17. MySql - ON DUPLICATE KEY INSERT
- 18. INSERT ... ON DUPLICATE KEY UPDATE如何判断哪些记录更新以及哪个插入了
- 19. INSERT..ON DUPLICATE KEY UPDATE - 但不使用重复密钥来比较
- 20. 使用INSERT ON DUPLICATE KEY UPDATE生成主键时出现问题
- 21. php5使用XML文件中的SimpleXML INSERT INTO ON DUPLICATE KEYS UPDATE mysql
- 22. 使用INSERT ON DUPLICATE UPDATE查询2个表
- 23. 如何使用ON DUPLICATE KEY UPDATE插入到MySQL表中?
- 24. 我可以通过单个请求获得INSERT/UPDATE ID吗?
- 25. 获取为ON DUPLICATE KEY UPDATE多插入插入的行数?
- 26. MySQL'INSERT ... ON DUPLICATE KEY UPDATE主键限制
- 27. REPLACE INTO ... ON DUPLICATE KEY UPDATE
- 28. INSERT INTO ... SELECT ... ON DUPLICATE KEY
- 29. INSERT ON DUPLICATE KEY问题
- 30. Codeigniter使用ON DUPLICATE KEY UPDATE的方式
哪些是支持这一条款的人的DBMS(除'MySQL')? – Quassnoi