我正在构建一个经常从其他API更新其本地数据库的系统。我将Python脚本设置为cron作业,他们的工作几乎没有。
然而,唯一的缺陷是脚本需要很长时间才能完成。当它们第一次运行时,过程很快,但在此之后需要将近20分钟才能完成从第三方API收到的200k +项目列表。
问题是脚本首先从数据库中获取所有行,并将它们必须唯一的列值添加到列表中。然后,在浏览API结果时,它会检查列表中是否存在当前项必须是唯一值。这会使真正重,因为列表中的值超过200k。
有没有办法检入INSERT
- 查询,根据单个列,没有重复?如果有,只是不添加新行。
任何帮助将不胜感激=)
答案 0 :(得分:5)
如果向必须包含UNIQUE值的列添加UNIQUE
键,当您插入违反此约束的行时,MySQL将会抱怨。
然后你有三个选择:
INSERT IGNORE
将尝试插入,如果发生违规,则不执行任何操作。INSERT ... ON DUPLICATE KEY UPDATE
会尝试插入,如果发生违规,请将行更新为新值REPLACE
将尝试插入,如果发生违规,请删除有问题的现有行,然后插入新行。