在MySQL数据库中插入可能存在的行的最佳方法

时间:2011-09-06 18:06:44

标签: mysql

我正在编写一个导出脚本,用于将行从一个数据库插入另一个数据库。该查询可以被执行多次,并且可以存在或不存在新数据。

当有可能的值时,我已经阅读了几种不同的插入方式: 关于重复IGNORE,INSERT IGNORE,REPLACE等

目前我选择了REPLACE,但我不确定它是否是最佳选择。我插入的行有一个名为DateCreated的字段。如果该条目已存在,我不想更新它,只是跳过它。

在DUPLICATE上运行到SKIP需要什么MySQL查询? DUPLICATE IGNORE?

使用DUPLICATE IGNORE和UPDATE IGNORE一样,忽略所有插入错误,例如错误的字段数等等?

2 个答案:

答案 0 :(得分:3)

您应该在DateCreated上添加UNIQUE KEY并使用INSERT IGNORE。

REPLACE将删除旧数据并插入新数据。如果要更新现有行中的某些数据,则应使用ON DUPLICATE KEY UPDATE。它会比REPLACE快。

答案 1 :(得分:0)

我会使用INSERT IGNORE,因为REPLACE首先删除记录然后插入一个新记录。 IGNORE不会忽略错误的列数错误。

仅在有重复记录的情况下有任何要更新的列时才使用ON DUPLICATE。比如,例如一个计数器列。