mysql 批量更新中 ON DUPLICATE KEY UPDATE 的性能问题
Performance issue of ON DUPLICATE KEY UPDATE in mysql bulk Update
As Mysql 不提供任何批量更新查询,但我们使用 ON DUPLICATE KEY UPDATE 的功能。当我们批量更新时使用下面的查询是否很好,如果不是那么使用下面的查询有什么性能问题?在 MySQL
中是否有任何其他方法可以批量更新
INSERT into fruits(id, value) VALUES
(1, 'apple'), (2, 'orange'), (3, 'peach'),
(4, 'apple'), (5, 'orange'), (6, 'peach'),
(7, 'apple'), (8, 'orange'), (9, 'peach'), (10, 'apple')
ON DUPLICATE KEY UPDATE value = VALUES(value);
聪明的把戏。让我们知道它是否比 10 UPDATE
语句快。我怀疑是——到服务器的往返次数减少了 9 次;对解析器的调用减少了 9 次;等等
有REPLACE
,但这很可能效率较低,因为它是
DELETE all rows that match any UNIQUE index; and
INSERT the row(s) given.
IODKU 有效
if row exists (based on any UNIQUE key)
then do "update"
else do "insert"
检查行是否存在的努力会将必要的块拉入缓存,从而为更新或插入做好准备。
As Mysql 不提供任何批量更新查询,但我们使用 ON DUPLICATE KEY UPDATE 的功能。当我们批量更新时使用下面的查询是否很好,如果不是那么使用下面的查询有什么性能问题?在 MySQL
中是否有任何其他方法可以批量更新INSERT into fruits(id, value) VALUES
(1, 'apple'), (2, 'orange'), (3, 'peach'),
(4, 'apple'), (5, 'orange'), (6, 'peach'),
(7, 'apple'), (8, 'orange'), (9, 'peach'), (10, 'apple')
ON DUPLICATE KEY UPDATE value = VALUES(value);
聪明的把戏。让我们知道它是否比 10 UPDATE
语句快。我怀疑是——到服务器的往返次数减少了 9 次;对解析器的调用减少了 9 次;等等
有REPLACE
,但这很可能效率较低,因为它是
DELETE all rows that match any UNIQUE index; and
INSERT the row(s) given.
IODKU 有效
if row exists (based on any UNIQUE key)
then do "update"
else do "insert"
检查行是否存在的努力会将必要的块拉入缓存,从而为更新或插入做好准备。