首页 > 数据库 > mysql教程 > 如何高效更新1.2亿条记录的表?

如何高效更新1.2亿条记录的表?

Mary-Kate Olsen
发布: 2025-01-03 11:57:38
原创
290 人浏览过

How Can I Efficiently Update a Table with 120 Million Records?

1.2 亿条记录的更新策略:一种有效的方法

更新包含 1.2 亿条记录的表可能是一项艰巨的任务。默认更新方法可能会耗尽资源并花费较长时间。为了克服这一挑战,更有效的方法是使用 SELECT 语句填充单独的表。

填充辅助表的步骤

对于没有聚集索引的表在没有并发DML的时期,可以应用以下步骤:

  1. 克隆BaseTable: 使用 SELECT 语句创建一个克隆.BaseTable,其中包含 dbo.BaseTable 中的数据以及设置为 -1 的新 INT 列。
  2. 纠正克隆: 重新创建克隆表上的索引、约束等。
  3. 交换表:利用 ALTER SCHEMA ... TRANSFER 交换原始表和克隆表。
  4. 清理:删除旧表。

对于具有聚集索引或其他索引的表复杂性,需要更详细的流程:

非简单的详细流程场景

  1. 重新创建 BaseTable: 将原始表克隆到具有聚集索引、标识列、计算列和新 INT 列的克隆架构中。
  2. 排除约束:省略触发器、外键约束、非集群索引,并检查约束。
  3. 测试插入:执行一个小型插入操作以验证克隆表的功能。
  4. 截断克隆:清除克隆表。
  5. 批量插入: 执行批量插入以批量日志或简单恢复模式克隆表。
  6. 重新创建约束:一一重新创建所有非聚集约束、索引、触发器和检查约束。
  7. 架构传输: 将克隆表移动到 dbo 架构,将原始表移动到备份架构。
  8. 校正操作: 如果适用,执行任何必要的校正操作。

结论

通过利用这种选择和填充方法,可以有效地更新大型表。这种方法可以显着减少表更新所需的时间,对于记录数量较多的表来说是一个可行的解决方案。

以上是如何高效更新1.2亿条记录的表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板