16

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

我想向现有索引添加一列。

我在谷歌上搜索它,但我找不到它的方法。

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

但是,这里它说将列添加到现有索引是常见的做法。(虽然作者不推荐。)

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

4

1 回答 1

19

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

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

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

于 2011-12-04T21:26:55.123 回答