首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中更新200万行数据的最佳实践是什么?

在MySQL中更新200万行数据的最佳实践是什么?
EN

Stack Overflow用户
提问于 2019-11-06 13:58:29
回答 2查看 199关注 0票数 0

在MySQL中更新200万行数据的最佳实践是什么?因为通过主id更新,所以我必须用1来更新1。这太慢了。如下所示

代码语言:javascript
复制
UPDATE table SET col1=value1 WHERE id=1;
UPDATE table SET col1=value2 WHERE id=2;
UPDATE table SET col1=value3 WHERE id=3;

UPDATE table SET col1=valueN WHERE id=N;
EN

回答 2

Stack Overflow用户

发布于 2019-11-06 14:14:35

假设table是innodb (查看SHOW CREATE TABLE table输出),其速度慢的原因之一是innodb_buffer_pool_size不足。

我还假设它处于默认的auto_commit=1模式,这意味着每一个SQL行都是一个事务。

通常,最好避免需要更改表中的每一行的进程。

您可以将其拆分为多个线程进行更新,这样可以更快地通过列表。如果表是MyISAM,它就不会以这种方式缩放。

票数 0
EN

Stack Overflow用户

发布于 2019-11-23 02:29:51

使用带有条件ON DUPLICATE KEY UPDATEINSERT语句在一个查询中更新许多行的好方法。如果唯一索引或主键中存在重复值,则该语句将更新旧行。See documentation

代码语言:javascript
复制
INSERT INTO table (id, col1, col2, col3) 
VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE 
    col1 = VALUES(col1), 
    col2 = VALUES(col2), 
    col3 = VALUES(col3); 

为了更新非常大的数据量,比如两百万行,试着用几千行将你的数据分成几个查询。

还要注意优化技巧:Optimizing INSERT StatementsBulk Data Loading for InnoDB Tables

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58723907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档