1.2 亿条记录的更新策略:一种有效的方法
更新包含 1.2 亿条记录的表可能是一项艰巨的任务。默认更新方法可能会耗尽资源并花费较长时间。为了克服这一挑战,更有效的方法是使用 SELECT 语句填充单独的表。
填充辅助表的步骤
对于没有聚集索引的表在没有并发DML的时期,可以应用以下步骤:
-
克隆BaseTable: 使用 SELECT 语句创建一个克隆.BaseTable,其中包含 dbo.BaseTable 中的数据以及设置为 -1 的新 INT 列。
-
纠正克隆: 重新创建克隆表上的索引、约束等。
-
交换表:利用 ALTER SCHEMA ... TRANSFER 交换原始表和克隆表。
-
清理:删除旧表。
对于具有聚集索引或其他索引的表复杂性,需要更详细的流程:
非简单的详细流程场景
-
重新创建 BaseTable: 将原始表克隆到具有聚集索引、标识列、计算列和新 INT 列的克隆架构中。
-
排除约束:省略触发器、外键约束、非集群索引,并检查约束。
-
测试插入:执行一个小型插入操作以验证克隆表的功能。
-
截断克隆:清除克隆表。
-
批量插入: 执行批量插入以批量日志或简单恢复模式克隆表。
-
重新创建约束:一一重新创建所有非聚集约束、索引、触发器和检查约束。
- 架构传输: 将克隆表移动到 dbo 架构,将原始表移动到备份架构。
-
校正操作: 如果适用,执行任何必要的校正操作。
结论
通过利用这种选择和填充方法,可以有效地更新大型表。这种方法可以显着减少表更新所需的时间,对于记录数量较多的表来说是一个可行的解决方案。
以上是如何高效更新1.2亿条记录的表?的详细内容。更多信息请关注PHP中文网其他相关文章!