我每天需要写入数据库 15k 个对象。我每天晚上都使用 cronjob 写入 mysql 服务器。每天晚上,这 15k 个对象中的 99% 都是相同的,并且在数据库中被唯一标识。
我已经设置了一条数据库规则,声明通过指定唯一键不会出现重复行。
我不想在实际插入之前检查现有行。
因此,我选择每晚插入所有 15k 对象并允许 mysql 防止重复行...(当然它会抛出错误)。
我这样做是因为如果我检查预先存在的行 - 它会显着降低速度。
我的问题:一次插入所有15k并允许mysql防止重复有什么问题吗? (无需手动检查预先存在的行)是否存在一个阈值,如果 mysql 错误 1,000 次,它将锁定自身并拒绝所有后续查询?
请帮忙!
最佳答案
使用INSERT IGNORE INTO...
将使MySQL无错误地丢弃该行并保留该行已存在。也许这就是你想要的?
如果您想覆盖现有行,您可以执行INSERT INTO ... ON DUPLICATE KEY UPDATE ...
。参见 docs
关于mysql - 覆盖数据库中的唯一行 - 这种方法是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522021/