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

时间:2011-12-04 21:04:18

标签: oracle indexing oracle11g oracle11gr2

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

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

我在Google上搜索过它,但我找不到办法。

我已阅读somewhere,将列添加到索引的唯一方法是删除并重新创建它。

但是,here it says通常会将列添加到现有索引中。 (虽然作者不推荐它。)

那么,是否可以在现有索引中添加列,如果可能,这是一种好的做法吗?

1 个答案:

答案 0 :(得分:16)

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

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

放弃和放弃是否是一个好主意。使用附加列重新创建索引取决于许多因素。正如Jonathan Lewis所指出的,在各种情况下,添加其他列会影响索引的聚类因子,并导致某些现有查询执行得更差。在不了解您的系统或我们正在讨论的索引的情况下,我们无法提出建议。