为什么在 Oracle 中删除基于函数的索引需要很长时间?

Cla*_*key 5 index oracle oracle-10g functions

我有一个基于函数的索引,在 9400 万行的表上创建需要 25 分钟。

当我删除索引时,需要 18 分钟。

为什么需要这么长时间?我会认为下降几乎是立即的?我注意到大约 10 分钟后,索引从 user_indexes 中删除,但脚本仍然执行了大约 8 分钟。

该表已分区,这是 Oracle 10g RAC 安装。如果有更多信息有帮助,我可以根据需要添加它。

对此的任何启发将不胜感激。

Vin*_*rat 8

基于函数的索引增加了一个虚拟列表中(然后该列被索引)。删除索引会删除虚拟列,这导致清理需要时间(与删除非虚拟列的工作量相同)。

  • 多年来,我一直相信 Oracle 将表达式放入索引中。我从来不知道它们是作为隐藏的虚拟列实现的。 (3认同)