我有两张桌子,我们称之为email_bounces和master_email_list。
master_email_list是~3.5万条记录。
email_bounces约有100,000条记录。
我正在尝试进行查询,如果在email_bounces中找到电子邮件地址,我会在master_email_list中更新bounce = 1。
这就是我所拥有的。
update 'master_email_list' set bounce=1 where email in (select email FROM 'email_bounces')
除了看起来不起作用之外,它会查询,然后无限期挂起(我让它在一夜之间运行过夜,之前运行了大约4个小时)。
非常感谢帮助。
答案 0 :(得分:0)
使用
update master_email_list l
inner join email_bounces b on b.email = l.email
set bounce = 1
您还可以尝试在更新期间停用密钥以加快速度:
ALTER TABLE master_email_list DISABLE KEYS;
然后
ALTER TABLE master_email_list ENABLE KEYS;
答案 1 :(得分:0)
使用表别名,您必须设置它。
我正在使用内部联接
update master_email_list mel
inner join email_bounces eb
on mel.email = eb.email
set mel.bounce = 1
答案 2 :(得分:0)
如果这个简单的查询需要几个小时,我只能看到两个可能的原因;
您错过了以master_email_list.email
作为第一列的索引。
创建指数ix_email ON master_email_list(电子邮件);
......应该加快的速度。