2

也许是一个愚蠢的问题,但使用基于函数的索引是否安全。我的意思是,当列更改时,索引会立即更改吗?

4

1 回答 1

11

假设它们设置正确,是的。

概述:Oracle 在具有基于函数的索引的表上创建一个隐藏列,每次更改基于函数的索引的列时都会更新该索引;假设这些值是确定性的(有关更多信息,请参见 oracle 链接)。您可以通过查询系统对象 all_tab_cols 您的表来查看这些隐藏列,在该表上创建了基于函数的索引。它们通常包含 $ 并且看起来像 SYS_NC00005$。

当您想要处理区分大小写或处理重复的函数调用时,通常会使用它们,在这些函数调用上执行函数调用的开销如此之快,以至于计算一次并保留它的值会导致性能提升。

补充阅读:

于 2012-04-13T13:23:34.810 回答