【问题标题】:Adding columns to existing index in Oracle在 Oracle 中将列添加到现有索引
【发布时间】:2012-01-12 19:05:20
【问题描述】:

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

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

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

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

但是,here it says 将列添加到现有索引是常见的做法。 (虽然作者不推荐。)

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

【问题讨论】:

标签: oracle indexing oracle11g oracle11gr2


【解决方案1】:

如果不删除并重新创建索引,就无法向现有索引添加新列。

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

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

【讨论】:

  • 刘易斯先生谈到索引下降为existing 索引时,我感到很困惑。此外,我在上述示例中搜索了 DROP INDEX 语句。我那本书对我来说太专业了,因为它不需要解释“琐碎”的事情:) 感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多