8

我需要将两个 DATE 列添加到已经存在的表中。但这需要很长时间,我必须终止该过程。奇怪的是我能够暂时将这些列添加到同一数据库中的其他表中。这些表中的大多数都比我在数据和列计数方面都遇到问题的表大。我必须做什么才能添加这些新列?

4

2 回答 2

9

这就是我解决问题的方法。之前,我在添加列时为列指定了默认值。但后来我首先添加了没有默认值的列。添加列后,我指定了默认值,它立即执行,无需等待。非常感谢@Justin Cave 关于默认值的提示。那是关键。

我毫不怀疑这与以下事实有关为所有行的新添加列设置默认值。正如人们所猜测的那样,更新 500 万条记录的成本很高。但是如果在添加列之后设置了默认值,那么之前插入的行中的新列的值将为 NULL,因此不会发生更新。

于 2012-05-12T06:33:10.493 回答
3

在 Oracle 11g 中添加一个没有默认值的 varchar2(4000) 列一个 61K 行表时,我也遇到了这个问题。30分钟后,柱子仍未加入。

我试图中止操作,然后重试,但仍然没有完成。

什么有效:
我尝试添加一个数字列,这花了一瞬间。丢掉了。
然后我尝试添加一个 varchar2(1) 列,这需要一瞬间。丢掉了。
然后我尝试再次添加一个 varchar2(4000) 列,它只花了一瞬间。

愚蠢的“解决方法”,但也许这也适用于其他面临这个问题的人。

于 2015-08-19T09:32:21.057 回答