【问题标题】:overwriting unique rows in database - is this method wrong?覆盖数据库中的唯一行 - 这种方法错了吗?
【发布时间】:2012-03-20 06:58:35
【问题描述】:

我每天有 15k 个对象需要写入数据库。我每天晚上都在使用 cronjob 写入 mysql 服务器。每天晚上,这 15k 个对象中的 99% 都是相同的,并且在数据库中被唯一标识。

我已经设置了一个数据库规则,通过指定唯一键来声明不会有重复的行。

我不想在实际插入之前检查现有行。

因此,我选择了每晚插入所有 15k 个对象,并允许 mysql 防止重复行...(当然会抛出错误)。

我这样做是因为如果我检查预先存在的行 - 它会显着降低速度。

我的问题:一次插入所有 15k 并允许 mysql 防止重复有什么问题吗? (无需手动检查预先存在的行)是否有一个阈值,如果 mysql 出错 1000 次,它将锁定自己并拒绝所有后续查询?

请帮忙!

【问题讨论】:

    标签: mysql database database-design insert mysql-error-1064


    【解决方案1】:

    使用INSERT IGNORE INTO... 将使MySQL 无错误地丢弃该行并保持该行已经存在。也许这就是你想要的?

    如果您想要覆盖现有行,您可以执行INSERT INTO ... ON DUPLICATE KEY UPDATE ...。见docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多