Sql 在Oracle中创建索引后是否需要重新编译视图

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

假设T1(F1,F2,F3),我有一个表。 然后,我使用T1(F1)列和T1(F2)列创建一个复杂视图。 然后过了一会儿,我在T1的F1列上创建了一个索引


那么,我的新索引将被现有视图使用,还是需要重新编译以更新其执行计划?

索引将立即使用,不需要重新编译。当您创建基于函数的索引时,可能需要重新编译它,因为这会向表中添加一个(隐藏)列(但我从未测试过)


无论如何,当您选择一个无效的视图时,Oracle会首先尝试自动重新编译它,因此在任何情况下都不需要手动重新编译。

假设您不是在谈论物化视图,则使用该视图的查询可以使用索引

请注意,表有列,而不是字段。请检查执行计划。