我有一个表,假设T1(F1,F2,F3)。然后,我使用T1(F1)列和T1(F2)列创建一个复杂的视图。然后过一会儿,我在T1的F1列上创建了一个索引。
因此,新索引将被现有视图使用,还是需要重新编译它以便更新其执行计划?
该索引立即使用,不需要重新编译。创建基于函数的索引时,可能需要重新编译它,因为这会向表中添加(隐藏)列(但我从未测试过)。
无论如何,当您选择一个无效的视图时,Oracle首先会尝试自动重新编译它,因此在任何情况下都不需要手动重新编译。
假设您不是在谈论实例化视图,那么使用该视图的查询可以使用索引。