将列添加到Oracle中的现有索引

bon*_*svr 15 oracle indexing oracle11g oracle11gr2

我有一个相对较大的表(81M行)和一个索引.

我想在现有索引中添加一列.

我在Google上搜索过它,但我找不到方法.

我在某处读过,向索引添加列的唯一方法是删除并重新创建它.

但是,这里说它通常会在现有索引中添加列.(虽然作者不推荐它.)

那么,是否可以在现有索引中添加列,如果可能,这是一个好习惯吗?

Jus*_*ave 18

在不删除和重新创建索引的情况下,无法向现有索引添加新列.

当Jonathan Lewis谈论"向现有索引添加列"时,他正在谈论删除现有索引并创建新索引.请注意,在他的示例中,"原始索引"和"修改后的索引"都列在一个CREATE INDEX语句中.ALTER INDEX示例中没有语句可以在不删除旧列的情况下添加新列.

使用附加列删除和重新创建索引是否是个好主意取决于许多因素.乔纳森·刘易斯指出,有些情况下增加额外的列会影响指数的集群因素,导致一些现有查询更多表现不佳的各种情况.在不了解您的系统或我们正在讨论的索引的情况下,我们无法提供建议.