改变是如何工作的?

1 oracle

我有一个包含大量记录(超过 15M)的表,我正在执行一个更改查询以向表中添加 2 列。
查询大约需要 1 小时才能完成执行。
所以我的问题是:alter 是如何工作的?为什么会受到记录数的影响?
是否可以使用列索引加速更改查询?

小智 5

向表中添加列的 ALTER TABLE 操作应该是仅更新简单数据字典。Oracle 没有理由访问表中的所有块/行。所以,操作应该非常快。(亚秒级响应时间。)

唯一的例外是,如果您使用的是 11g 之前的 Oracle 版本,并且您为要添加的列设置了默认值,则 Oracle 必须访问所有行。在 11g 中,即使设置默认值也不会沉淀对表中所有行的访问。