我有一个相对较大的表(81M行)和一个索引。
我想在现有索引中添加一列。
我在Google上搜索过它,但我找不到办法。
我已阅读somewhere,将列添加到索引的唯一方法是删除并重新创建它。
但是,here it says通常会将列添加到现有索引中。 (虽然作者不推荐它。)
那么,是否可以在现有索引中添加列,如果可能,这是一种好的做法吗?
答案 0 :(得分:16)
在不删除和重新创建索引的情况下,无法向现有索引添加新列。
当Jonathan Lewis谈到“在现有索引中添加一列”时,他正在谈论删除现有索引并创建一个新索引。请注意,在他的示例中,“原始索引”和“修改后的索引”都列有CREATE INDEX
语句。示例中没有ALTER INDEX
语句可以添加新列而不删除旧列。
放弃和放弃是否是一个好主意。使用附加列重新创建索引取决于许多因素。正如Jonathan Lewis所指出的,在各种情况下,添加其他列会影响索引的聚类因子,并导致某些现有查询执行得更差。在不了解您的系统或我们正在讨论的索引的情况下,我们无法提出建议。