首页 > 解决方案 > mysql更新1000万行的大约时间

问题描述

我需要更新超过千万行(生产)的表。一开始会增加3个新闻栏目col1, col2, col3。这 3 个新闻栏将具有基于其他栏的默认值prev_col1, prev_col2, prev_col3。新旧列是var char最大长度为 10 的列,其中一些可能为空。我在问,大概的时间是多少,因为我从来没有一次更新过那么多行。

我应该使用简单的更新:

UPDATE table_name SET col1=prev_col1, col2=prev_col2, col3=prev_col3;

或者是更新大量行的任何其他有效方法吗?

标签: mysqlsqldatabase

解决方案


有效的更新方法是使用MySQL Join-Buffer-Size来更新大行。例如

SET join_buffer_size = 1024 * 1024 * 42;
UPDATE table1 a JOIN table2 b 
ON a.field1 = b.field1 
SET 
a.field2 = b.field2,
a.field3 = b.field3,
a.field4 = b.field4;

mysql> SET GLOBAL join_buffer_size = 1024 * 1024 * 42;

可能这可能会有所帮助:-update-10-000万行-in-mysql-single-table-as-fast-as-possible


推荐阅读