如何加速MySQL中的批量更新

时间:2017-05-01 07:32:29

标签: mysql

我想在我的表格中更新此邮件。为此列创建了索引。但这个更新需要1个多小时,无论服务器是空的,还需要很多时间来更新。为什么它很慢?我希望每天更新超过200万行。如何加快这个查询。

update table1 SET list='mm' where mail='sqkw@gmail.com';
update table1 SET list='mm' where mail='wefr@gmail.com';
update table1 SET list='mm' where mail='dkfjgk@gmail.com';
update table1 SET list='mm' where mail='jkdfj@gmail.com';
update table1 SET list='mm' where mail='tyhr@gmail.com';
update table1 SET list='mm' where mail='dsfdsf@gmail.com';
update table1 SET list='mm' where mail='dfjs@gmail.com';
update table1 SET list='mm' where mail='sdjf@gmail.com';
update table1 SET list='mm' where mail='sfs@gmail.com';
update table1 SET list='mm' where mail='wef@gmail.com';
update table1 SET list='mm' where mail='srfsf@gmail.com';
update table1 SET list='mm' where mail='sadsd@gmail.com';
update table1 SET list='mm' where mail='ggu@gmail.com';
update table1 SET list='mm' where mail='ft@gmail.com';
update table1 SET list='mm' where mail='cvsdf@gmail.com';
update table1 SET list='mm' where mail='dvsd@gmail.com';
update table1 SET list='mm' where mail='dsfswr@gmail.com';
update table1 SET list='mm' where mail='sdgs@gmail.com';
update table1 SET list='mm' where mail='werwe@gmail.com';
update table1 SET list='mm' where mail='eg@gmail.com';
update table1 SET list='mm' where mail='geg@gmail.com';
update table1 SET list='mm' where mail='fvgdfs@gmail.com';
update table1 SET list='mm' where mail='ww1@gmail.com';
update table1 SET list='mm' where mail='ger@gmail.com';
update table1 SET list='mm' where mail='sf@gmail.com';
update table1 SET list='mm' where mail='fgdeg@gmail.com';
update table1 SET list='mm' where mail='wfgwe@gmail.com';
update table1 SET list='mm' where mail='asd@gmail.com';
update table1 SET list='mm' where mail='dfg@gmail.com';
update table1 SET list='mm' where mail='3r@gmail.com';
update table1 SET list='mm' where mail='geg@gmail.com';
update table1 SET list='mm' where mail='sdvsd@gmail.com';

2 个答案:

答案 0 :(得分:0)

UPDATE table1
SET list='mm'
WHERE mail IN('sqkw@gmail.com', 'wefr@gmail.com', ...)

答案 1 :(得分:0)

一些提示:

  1. 在做任何事之前备份。
  2. DROP除mail
  3. 以外的所有索引
  4. 将表格的引擎更改为InnoDB
  5. 运行您的UPDATE
  6. 将引擎更改为MyISAM
  7. 重新创建索引。
  8. 这是硬核方案。保证,大量更新时间将减少到几分钟。如果不是这种情况,您的硬件可能有问题。然而,其他操作可能需要更长时间,我对你的桌子知之甚少。

    测试不同的选项:要么只更改引擎,要么只有DROP /重新创建索引。