(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. INSERT SELECT與ON DUPLICATE KEY UPDATE
- 4. Jooq INSERT on duplicate key UPDATE
- 5. 如何使用mongodb-insert-on-duplicate-key-update?
- 6. MySQL嵌入INSERT與ON DUPLICATE KEY UPDATE
- 7. 使用ON DUPLICATE KEY UPDATE更新插入查詢已存在row
- 8. 使用SET選項可以使用ON DUPLICATE KEY UPDATE和INSERT查詢嗎?
- 9. 我可以在多個字段上使用ON DUPLICATE KEY UPDATE嗎?
- 10. 更新/插入記錄 - ON DUPLICATE KEY UPDATE - 不更新記錄
- 11. 我可以在'insert ... on duplicate update ...'語句中重用綁定變量嗎?
- 12. MySQL Batchupdate()with ON DUPLICATE KEY UPDATE
- 13. INSERT ON DUPLICATE KEY
- 14. 是否有可能在INSERT ON DUPLICATE KEY UPDATE中使用'join'
- 15. INSERT ... ON DUPLICATE KEY UPDATE - 不更新特定字段?
- 16. INSERT INTO ... ON DUPLICATE KEY UPDATE sprintf混淆
- 17. MySQL INSERT ... SELECT ... ON DUPLICATE KEY UPDATE增量
- 18. INSERT SELECT ON DUPLICATE UPDATE的SQL語法
- 19. Mysql - 「insert ... on duplicate key update」at concurrency
- 20. INSERT ... ON DUPLICATE UPDATE - 鎖定等待超時
- 21. INSERT INTO ... ON DUPLICATE KEY UPDATE增量語法
- 22. 將參數傳遞給INSERT ..ON DUPLICATE UPDATE
- 23. ON DUPLICATE KEY - 不插入,只更新
- 24. ON DUPLICATE KEY UPDATE壞迴應
- 25. MYSQL ON DUPLICATE KEY UPDATE問題
- 26. 我可以在PHP for循環中使用ON DUPLICATE UPDATE KEY
- 27. MySql - ON DUPLICATE KEY INSERT
- 28. INSERT ... ON DUPLICATE KEY UPDATE如何判斷哪些記錄更新以及哪個插入了
- 29. INSERT ... ON DUPLICATE KEY更改重複值並插入
- 30. AFTER INSERT觸發器和INSERT IGNORE/ON DUPLICATE KEY更新
哪些是支持這一條款的人的DBMS(除'MySQL')? – Quassnoi