我有一个包含一千万行数据的表,需要与另一个表连接并更新所有数据。这个操作需要超过一个小时,并且会导致事务日志增加十多GB。有没有其他方法可以提高性能?
我认为每次更新后,索引和约束都会被检查,并记录所有信息。有没有一种方法可以告诉SQL Server等到更新完成后才检查约束,并最小化更新操作的记录日志?
以下是我的查询语句。我已经修改了一些名称以使其更易读。
我认为每次更新后,索引和约束都会被检查,并记录所有信息。有没有一种方法可以告诉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