首页 > 解决方案 > Oracle 对视图使用提示索引并将其强制为基表

问题描述

如何在针对视图的查询中使用提示来强制 Oracle 使用基表上的索引?

例如

看法

select emp_id 
from v_employees 

基表

select emp_id /*+ INDEX(employees IDX_emp_id) */ 
from employees

我想从视图中读取,但使用基表中的索引,而不更改视图查询。像这样的东西:

select emp_id /*+ INDEX(v_employees employees IDX_emp_id) */
from v_employees

标签: sqloracleperformanceindexingquery-optimization

解决方案


我们可以使用全局提示来引用视图中的表。视图名称与表名或别名(如果我们想在子查询中访问表的索引)嵌套使用..

因此,在您的示例中,它将是:

select /*+ INDEX(v_employees.employees IDX_emp_id) */ emp_id 
from v_employees 

请注意,提示出现在投影之前。


推荐阅读