0

我的应用程序(使用 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 条这样的语句。

有没有办法在一个语句中处理所有这些,而不删除任何现有记录?

4

1 回答 1

0

您可以将所有内容放入 1 insert 中 INSERT IGNORE INTO table_1 (field1, field2) VALUES ('val1', 'val2'), ('val3', 'val4'), etc。您可能还想检查INSERT ... ON DUPLICATE KEY UPDATE是否需要更新程序或插入记录。

于 2011-01-14T21:56:55.630 回答