0

我需要添加一列,使得所有现有行的值为 1,所有新行的值默认为 0

很简单,我已经创建了一个脚本

ALTER TABLE Table ADD Column1 BIT NOT NULL DEFAULT 0
GO

UPDATE Table SET Column = 1
GO

在 400K 行数据集上更新查询需要 10 多分钟。这里的开销在哪里?

我怀疑我可以添加列,使默认值为 1,然后在不到 10 秒的计算时间内将默认值更改为 0(并且可能会更改脚本以在下一个测试阶段这样做)。

4

1 回答 1

0

首先,"Print"在语句之间使用并放置两个时间戳来检查哪个有开销。为了解决一个问题,你应该首先知道导致它的根源。正如我的经验所说,它正在添加需要很长时间才能完成的列。

其次,如果表中存储了大约 40 万条记录,那么添加新列当然会带来巨大的 IO 成本。因此,如果您让我知道您的需求,我会想到一个更好的解决方案。添加和删​​除列,更改表等在蓝月亮中发生一次,您不应该像通常的操作那样做这样的事情。这根本不正确。

毕竟,我知道您想添加一列并在 10 秒内更新值,但这取决于许多其他事情,而您的代码(因为它很简单)就是其中之一。所以我认为你应该更多地考虑这个想法而不是你的代码。

希望能帮助到你。

干杯

于 2012-11-10T22:04:31.873 回答