我的用户将上传大型csv文件。我需要添加批量mysql值(比如insert into my_table (name, email) values ('john', 'abc@d.co'), ('foo','def@g.org') ...
)
如果数据库或查询本身存在重复的电子邮件,则不应插入(或者应使用新名称更新它们)。
我每个值运行一次查询,但性能很糟糕(2,000 csv文件需要一分钟或更长时间)。
如何优化此优化,最好是优质查询,或创建唯一的复合键(user_id和电子邮件组合是唯一的),并声明insert ignore into my_table ...
忽略重复项。但是如何?
谢谢!
答案 0 :(得分:1)
我直接从这里解除了这个:On Duplicate Key Update - Multiple Columns
如果它有效,你应该给他/她一个碰撞。
INSERT INTO my_table
(name, email)
VALUES
('john', 'abc@d.co'),
('foo','def@g.org')
ON DUPLICATE KEY UPDATE
name=VALUES(name)
email=VALUES(email)