我们为客户端持有约350k的电子邮件地址数据库.
他们为我提供了几个excel电子表格,他们想要删除大约150k的电子邮件地址(长话短说,这是一个垃圾邮件列表,他们已经掌握并希望删除反弹).
使用查找和替换的奇迹,我有一个查询构建来执行这个巨大的删除但查询需要太长时间和超时(没有惊喜).
我建立的查询形式为:
DELETE FROM emaillist
WHERE intListID = 68
AND
(strEmailAddress = "aaaa@aaaa.com"
OR strEmailAddress = "aaab@aaaa.com"
OR strEmailAddress = "aaac@aaaa.com"
......
etc etc etc
......
OR strEmailAddress = "zzzy@zzzz.com"
OR strEmailAddress = "zzzz@zzzz.com"
)
有一个更好的方法吗?
解决方法:
将要删除的电子邮件放在临时表中.然后,您可以使用联接从原始表中删除电子邮件
DELETE e
FROM emaillist e
INNER JOIN temp_table t ON t.strEmailAddress = e.strEmailAddress
WHERE intListID = 68
之后放下临时表并完成.
标签:mysql
来源: https://codeday.me/bug/20190715/1467961.html