我正在构建一个系统,它经常从其他API中更新其本地数据库。我将Python脚本设置为cron作业,它们几乎可以很好地完成任务。
然而,一个缺陷是,脚本需要很长时间才能执行。当它们第一次运行时,这个过程是快速的,但是在此之后,需要花费将近20分钟的时间来查看从第三方API接收到的200k+项目列表。
问题是,脚本首先从数据库中获取所有行,并将其必须是唯一的列值添加到列表中。然后,当查看API结果时,它会检查当前项必须是唯一的值是否存在于列表中。这变得非常沉重,因为列表中包含超过200k的值。
是否有一种方法可以签入基于单个列的INSERT-query,而不存在重复?如果存在,则干脆不添加新行。
如有任何帮助,我们将不胜感激
发布于 2011-11-06 10:46:12
如果向必须包含唯一值的列添加UNIQUE键,则当您插入违反此约束的行时,MySQL会发出抱怨。
然后,您有三个选择:
INSERT IGNORE将尝试插入,如果违反,nothing.INSERT ... ON DUPLICATE KEY UPDATE将尝试插入,如果违反,则将行更新为新的valuesREPLACE将尝试插入,如果违反,则删除违规的现有行,并插入新的行。https://stackoverflow.com/questions/8026506
复制相似问题