99% 的情况下,单个就足够了,但不到 0.01% 的情况下,我需要在同一键上UPDATE跟进。INSERT这可以写成一个单一的INSERT ... ON DUPLICATE KEY UPDATE,但就性能而言,我应该吗?
问题基本上是INSERT ... ON DUPLICATE KEY UPDATEs 是否预计比UPDATEMySQL 中的 s 慢。
一些代码来演示:
代码使用UPDATE
UPDATE foo SET seq = @new_seq WHERE id = X AND seq = @prev_seq;
IF rows_changed = 0 THEN
INSERT INTO foo (id, seq) VALUES (X, @new_seq)
IF <duplicate key error> THEN
-- handle collusion
END IF
END IF
Run Code Online (Sandbox Code Playgroud)
代码使用INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO …Run Code Online (Sandbox Code Playgroud) mysql ×1