gpt4 book ai didi

mysql - 获取为 ON DUPLICATE KEY UPDATE 多次插入插入的行数?

转载 作者:可可西里 更新时间:2023-11-01 06:28:19 24 4
gpt4 key购买 nike

我有一个非常大的表,其主键为 BINARY(20)

该表有大约 1700 万行。每小时一个 cron 作业会尝试使用 ON_DUPLICATE_KEY_UPDATE 语法向该表中插入多达 50,000 个新条目。

cronjob 中的每个插入都有 1,000 个值(多次插入)。如何从该查询中获取插入到表中的行数?我无法计算前后的行数,因为大约有 1700 万行,而且查询成本太高。

在 mysql 手册中说,对于插入的行,受影响的行数是 1,对于更新的字段,它是 2,这意味着在我的 1000 INSERT ON DUPLICATE KEY 中UPDATE 查询我可能影响了 1000 - 2000 行,但我无法知道从这个数字中插入了多少条记录?

我怎样才能克服这个问题?

谢谢

最佳答案

插入的数量将是 2000 减去受影响的行数。更一般地说:

(numberOfValuesInInsert * 2) - mysql_affected_rows()

编辑:

作为tomas points out , MySQL docs实际上说:

With ON DUPLICATE KEY UPDATE, the affected-rows value per row is 1 if the row is inserted as a new row, 2 if an existing row is updated, and 0 if an existing row is set to its current values.

[强调我的]

因此,如果可以将现有行设置为相同的值,则无法判断更新了多少行和插入了多少行,因为两次插入与一次具有不同值的更新 + 一次具有相同值的更新无法区分.

关于mysql - 获取为 ON DUPLICATE KEY UPDATE 多次插入插入的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10925632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com