小编Ben*_*ada的帖子

提高将大表上的列更改为非 NULL 的速度

我最近在一个有近 5 亿行的表中添加了一个可以为 NULL 的位列。列上没有默认值,但是所有插入都指定了 0 或 1 的值,我运行了一个一次性例程,将 0 或 1 分配给所有现有行(小批量更新行)。现在每一行在该列中都应该有一个 0 或 1。

我想让位列不可为空,但是当我尝试通过 执行此操作时ALTER TABLE t1 ALTER COLUMN c1 bit not null,它开始运行 3 分钟,然后我停止了它,因为它阻止了对表的所有读取,我怀疑它需要很长时间才能完成. 可能不会花太长时间,但我不能冒太多不可用的风险。回滚本身花了 6 分钟。

您对如何使列不可为空而不需要花费数小时才能完成有什么建议吗? 此外,有什么方法可以估计ALTER TABLE ALTER COLUMN我开始然后取消的语句需要多长时间才能完成?

我使用的是 SQL Server 2017 网络版。

null sql-server alter-table sql-server-2017

12
推荐指数
2
解决办法
1298
查看次数

标签 统计

alter-table ×1

null ×1

sql-server ×1

sql-server-2017 ×1