我的应用程序(使用 MySQL)正在执行大量后续更新。现在我的 SQL 看起来像这样:
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('VICTOR H KINDELL','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('VICTOR H KINDELL','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('VICTOR H KINDELL OR','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('TRACY L WALTER PERSONAL REP FOR','123','123','123')
INSERT IGNORE INTO customer (name,customer_number,social_security_number,phone) VALUES ('TRACY L WALTER PERSONAL REP FOR','123','123','123')
到目前为止,我发现INSERT IGNORE
这是实现 upserts 的最快方法。选择一条记录以查看它是否存在,然后更新它或插入一条新记录太慢了。即使这也没有我想要的那么快,因为我需要为每条记录做一个单独的声明。有时我会连续有大约 50,000 条这样的语句。
有没有办法在一个语句中处理所有这些,而不删除任何现有记录?