ORACLE功能索引未更新

时间:2018-10-30 09:56:51

标签: oracle function indexing

我使用了基于函数的索引,以便能够根据来自另一个表的查找值对一个表进行排序。

如果查询的值发生变化,则无法正常工作-我是否错误地使用了确定性函数?我还能如何根据另一个表中的值来索引一个表?

这是标准版,所以我只有B树索引。

1 个答案:

答案 0 :(得分:2)

您不能使用B树索引来执行此操作。确定性意味着函数的结果仅取决于输入数据-oracle对索引强制执行确定性函数的事实恰恰是另一个表中的更改不会更改索引。

对于此类问题,您绝对必须使用位图连接索引。

您只能做的另一件事是将查找值冗余地保存在基表中,并在更改查找表时更新这些值。但这是不好的数据库设计,只有在绝对必要的情况下才应该这样做。