T-SQL更新比删除和添加列需要更长的时间

时间:2012-11-10 21:55:45

标签: sql tsql sql-server-2005

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

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

ALTER TABLE Table ADD Column1 BIT NOT NULL DEFAULT 0
GO

UPDATE Table SET Column = 1
GO

更新查询在400K行数据集上花费超过10分钟。 这里的开销在哪里

我怀疑我可以添加列,使默认值为1,然后在不到10个计算秒内将默认值更改为0(并且可能会改变脚本以便在下一个测试阶段执行此操作)。

1 个答案:

答案 0 :(得分:0)

首先,使用"Print"并在语句之间放置两个时间戳,以检查哪一个有空头。要解决问题,您应该首先了解导致问题的来源。正如我的经验所说,它正在添加需要很长时间才能完成的专栏。

其次,如果您在表中存储了大约400K记录,那么添加新列会产生巨大的IO成本。所以,如果你告诉我你的需求,我会想到一个更好的解决方案。添加和删​​除列,改变表等在蓝色的月亮中发生一次,你不应该像通常的操作那样做。这根本不正确。

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

希望它有所帮助。

干杯