大表更新最佳实践

时间:2021-02-19 17:54:47

标签: sql-server tsql

我有两个表更新要在大表上运行。我正在更改两种情况下的数据类型。

表 1 有 200 万行,需要我删除主键约束并重新添加它。 表 2 有 10 亿行,没有任何限制。

在进行这些更新时我需要考虑什么?是否会为这些事务中的每一个写入事务日志?

这是我的代码,有没有更有效的方法来做到这一点?

-- 2 MILLION ROWS IN TableX -----------------------------------------------
ALTER TABLE [dbo].[TableX]
DROP CONSTRAINT [PK_TableX] -- Clustered Primary Key Constraint

ALTER TABLE [dbo].[TableX]
ALTER COLUMN [SomeColumn] CHAR(4) NOT NULL; -- WAS INT

ALTER TABLE [dbo].[TableX]
ADD CONSTRAINT [PK_TableX]
PRIMARY KEY CLUSTERED ( [BusinessDate] ASC, [CustomerID] ASC )


-- 1 BILLION ROWS IN TableZ -----------------------------------------------
ALTER TABLE dbo.TableZ
ALTER COLUMN SomeColumn INT NOT NULL -- WAS CHAR(7)

0 个答案:

没有答案