我有一个有很多记录(超过15M)的表,我正在执行一个alter来向表中添加2列。
该查询大约需要1小时才能完成执行。
所以我的问题是:改变是如何运作的?为什么它会受到记录数量的影响?
是否可以使用列索引加速ALTER查询?
发布于 2011-12-21 17:47:58
将列添加到表中的ALTER操作应该是一个简单的数据字典只更新。Oracle没有理由访问表中的所有块/行。所以手术应该非常快。(亚秒响应时间)
唯一的例外是,如果您在11g之前使用了Oracle版本,并且要为要添加的列设置默认值,则Oracle必须访问所有行。在11g中,即使设置默认值也不会导致对表中所有行的访问。
发布于 2011-12-21 16:48:13
如果要指定默认值,则需要更新表中的每一行以添加新列。这就是为什么它会受到记录数量的影响。列索引不会有帮助,因为索引与此操作无关。
https://dba.stackexchange.com/questions/9561
复制相似问题