mysql - 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;
或者是更新大量行的任何其他有效方法吗?
解决方案
有效的更新方法是使用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
推荐阅读
- html - 标题 div 保持在顶部,垂直滚动 div 在下方,仅附有滚动条的主体
- reactjs - ReactNative VirtualizedList 性能优化
- javascript - 在 d3/observablehq 中以 JSON 格式解析日期
- reactjs - 在 React Native 中渲染数据
- docker - Windows 10 系统的 docker 镜像开发中的问题
- server - 创建带前缀的子域
- c# - 如何异步创建缓存以减少应用/页面的加载时间?
- css - 如何将两个文本精确地向左对齐
- sql - SQL选择按时间增长排序的记录
- azure-devops - DevOps YAML 构建管道多存储库触发器分支未由 Release Pipeline 识别,用于持续部署触发器或工件过滤器