oracle索引何时以及为何变为无效?

时间:2013-12-01 08:01:04

标签: database oracle indexing

我一直认为每次插入,更新或删除后,B树索引总是会更新(重新平衡)。但是,看起来Oracle在删除(deleted leafs still remain in index tree)后不会更新它。如何插入和更新我们使用B树索引类型的行?是否在每次插入/更新期间更新索引?

另一个问题是为什么以及当索引变为无效时需要重建它们?我最关心的是B树索引,但知道何时必须重建其他类型的索引也会很有趣。

2 个答案:

答案 0 :(得分:2)

在正常操作下,索引在Oracle中不会失效。

他们很少需要“重建”。有关详细信息,请参阅此Ask Tom文章。 Jonathan Lewis' blog还包含有关此主题的非常有用的信息:

我能想到索引无效的唯一可能方法是手动禁用(alter index foo disable)或通过直接路径插入加载数据时使用带有direct=true选项的SQL * Loader时。

编辑:

当然我忘记了分区。而温弗里德的答案是正确的。

答案 1 :(得分:2)

当您拥有具有全局索引的分区表并从该表中删除一个分区时,索引将变为无效。但是,删除分区时,可以指定隐式重建索引。