由于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);
答案 0 :(得分:1)
聪明的把戏。如果它比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"
检查行是否存在的工作会将必要的块拉入缓存中,从而为更新或插入启动内容。