也许是一个愚蠢的问题,但使用基于函数的索引是否安全。我的意思是,当列更改时,索引会立即更改吗?
答案 0 :(得分:10)
假设它们设置正确,是的。
概述: Oracle使用基于函数的索引在表上创建一个隐藏列,每次更改基于函数的索引的列时都会更新该列;假设值是确定性的(有关详细信息,请参阅oracle链接)。您可以通过查询系统对象all_tab_cols查看创建基于函数的索引的表来查看这些隐藏列。它们通常包含$,看起来像SYS_NC00005 $。
当你想要处理区分大小写或处理重复函数调用时经常使用它们,在这些函数上执行函数调用的开销是这样的频率,即计算值一次并保留它的前期值会导致性能获得。
补充阅读: