首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止基于列(MySQL)的重复行?

防止基于列(MySQL)的重复行?
EN

Stack Overflow用户
提问于 2011-11-06 10:44:55
回答 1查看 1.3K关注 0票数 2

我正在构建一个系统,它经常从其他API中更新其本地数据库。我将Python脚本设置为cron作业,它们几乎可以很好地完成任务。

然而,一个缺陷是,脚本需要很长时间才能执行。当它们第一次运行时,这个过程是快速的,但是在此之后,需要花费将近20分钟的时间来查看从第三方API接收到的200k+项目列表。

问题是,脚本首先从数据库中获取所有行,并将其必须是唯一的列值添加到列表中。然后,当查看API结果时,它会检查当前项必须是唯一的值是否存在于列表中。这变得非常沉重,因为列表中包含超过200k的值。

是否有一种方法可以签入基于单个列的INSERT-query,而不存在重复?如果存在,则干脆不添加新行。

如有任何帮助,我们将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-06 10:46:12

如果向必须包含唯一值的列添加UNIQUE键,则当您插入违反此约束的行时,MySQL会发出抱怨。

然后,您有三个选择:

  • INSERT IGNORE将尝试插入,如果违反,nothing.
  • INSERT ... ON DUPLICATE KEY UPDATE将尝试插入,如果违反,则将行更新为新的values
  • REPLACE将尝试插入,如果违反,则删除违规的现有行,并插入新的行。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8026506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档