我需要添加一个列,使得所有现有行的值为1,对于所有新行,值默认为0
很简单,我已经创建了一个脚本
ALTER TABLE Table ADD Column1 BIT NOT NULL DEFAULT 0
GO
UPDATE Table SET Column = 1
GO
更新查询在400K行数据集上花费超过10分钟。 这里的开销在哪里?
我怀疑我可以添加列,使默认值为1,然后在不到10个计算秒内将默认值更改为0(并且可能会改变脚本以便在下一个测试阶段执行此操作)。
答案 0 :(得分:0)
首先,使用"Print"
并在语句之间放置两个时间戳,以检查哪一个有空头。要解决问题,您应该首先了解导致问题的来源。正如我的经验所说,它正在添加需要很长时间才能完成的专栏。
其次,如果您在表中存储了大约400K记录,那么添加新列会产生巨大的IO成本。所以,如果你告诉我你的需求,我会想到一个更好的解决方案。添加和删除列,改变表等在蓝色的月亮中发生一次,你不应该像通常的操作那样做。这根本不正确。
毕竟,我知道你想要在不到10秒的时间内添加一个列并更新值,但这取决于许多其他事情和你的代码(因为它很简单)就是其中之一。所以我认为你应该比你的代码更多地考虑这个想法。
希望它有所帮助。
干杯