当前位置: 首页 > 面试题库 >

如何使用SQL Server批量更新?

谢墨竹
2023-03-14
问题内容

我有一个包含一千万行的表,需要与另一个表连接并更新所有数据。一小时要花费超过1个小时的时间,这使我的事务日志增加了10+
GB。是否有另一种方法可以增强此性能?

我相信,每次更新后,都会检查索引和约束并记录所有信息。有没有一种方法可以告诉SQL Server仅在更新完成后才检查约束并最小化记录更新操作?

我的查询如下。我已经修改了一些名称,以便于阅读。

UPDATE o
SET o.Info1 = u.Info1, o.Info2 = u.Info2, o.Info3 = u.Info3
FROM Orders o
INNER JOIN Users u
ON u.ID = o.User_ID

编辑: 如注释中所述,表定义将类似于以下内容(再次简化以创建通用问题)。

表顺序

ID int PK
OrderNumber nvarchar(20)
User_ID int FK to table Users
Info1 int FK to table T1
Info2 int FK to table T2
Info2 int FK to table T3

表用户

ID int PK
UserName nvarchar(20)
Info1 int FK to table T1
Info2 int FK to table T2
Info2 int FK to table T3

问题答案:

首先,没有这样的BULK UPDATE事情,您可以做的一些事情如下:

  1. 如果可能,请在执行此操作之前将数据库置于简单恢复模式。
  2. 在执行更新之前删除索引,并在更新完成后再次创建它们。
  3. 进行小批量更新,例如
    WHILE (1=1)
    

    BEGIN
    – update 10,000 rows at a time
    UPDATE TOP (10000) O
    FROM Table O inner join … bla bla

    IF (@@ROWCOUNT = 0)
           BREAK;
    

    END

笔记

如果您选择了简单模式选项,则在将恢复模式切换回完全模式后,请不要忘记进行完整备份。由于只需将其切换回完全恢复模式,就不会进行日志记录,直到您进行了完全备份。



 类似资料:
  • 问题内容: 我想用Django更新表格-原始SQL中的内容如下: 我的第一个结果是这样的-但这很讨厌,不是吗? 有没有更优雅的方式? 问题答案: UPD Django 2.2版本现在具有bulk_update。 请参阅以下django文档部分 一次更新多个对象 简而言之,你应该可以使用: 你还可以使用F对象来执行诸如增加行数之类的操作: 请参阅文档:https : //docs.djangopro

  • 我想用Django更新一个表-类似这样的原始SQL: 我的第一个结果是这样的——但这很恶心,不是吗? 有没有更优雅的方式?

  • 问题内容: 是否可以在露天使用CMIS进行批量更新。 我有不同的文档类型,并且每个文档类型在露天仓库中都有多个文档。 现在,我的要求是,如果我将更新任何文档的任何单个属性,则它应与相同类型的所有文档一起反映。 我可以使用CMIS吗? 如果是,请提供步骤和示例代码。 提前致谢 问题答案: 困难的方法(和健谈的方法)是查询您的文档,然后在每个文档上设置属性。但是CMIS规范实际上提供了一种更好的方法:

  • 本文向大家介绍SQLServer批量更新两个关联表数据的方法,包括了SQLServer批量更新两个关联表数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了SQLServer批量更新两个关联表数据的方法。分享给大家供大家参考,具体如下: 方式1: 方式2: 希望本文所述对大家SQL Server数据库程序设计有所帮助。

  • 问题内容: 有什么方法可以简化为一个查询吗? 问题答案: 是的,您可以使用以下查询进行操作:

  • 问题内容: 如何批量更新mysql数据?如何定义这样的事情: 具有一些值,例如: 和其他值: 也许用mysql是不可能的?一个PHP脚本? 问题答案: 在这种情况下,最简单的解决方案是使用构造。它的工作速度非常快,并且可以轻松完成工作。 或使用建筑