将字段添加到大表的最快方法

joh*_*mcp 4 sql-server sql-server-2014

我有一个相当大的表(大约 4 亿行),我需要添加带有 NOT NULL 约束的 bit 类型的新列。我的方法是添加没有 NOT NULL 约束的字段,将字段设置为 0 并更改列以添加 NOT NULL 约束。这是一个相当缓慢的过程。有没有更快的方法?

我使用的是 SQL Server 2014 企业版

Mar*_*ith 6

由于您使用的是企业版且版本 >= 2012,因此应适用SQL Server 2012中的Online non-NULL with values column add 中的信息

Alter table yourtable 
    add newcolumn bit not null default 0;
Run Code Online (Sandbox Code Playgroud)

应该只是元数据,并且与您提出的解决方案不同,不必向所有行写入任何内容。

  • @johnmcp 和 Martin:此处不需要`WITH VALUES` 子句。这仅用于添加具有默认值的 NULLable 列,并且您希望初始值是默认值而不是“NULL”。对于这种特殊情况,只需要“DEFAULT”(并设置为“0”而不是“1”;)。 (2认同)