sql - 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
解决方案
我们可以使用全局提示来引用视图中的表。视图名称与表名或别名(如果我们想在子查询中访问表的索引)嵌套使用.
.
因此,在您的示例中,它将是:
select /*+ INDEX(v_employees.employees IDX_emp_id) */ emp_id
from v_employees
请注意,提示出现在投影之前。
推荐阅读
- spring-boot - Maria DB JDBC 驱动程序使用过多 CPU
- laravel - 请问如何将数据从 show 方法共享到两个不同的视图
- c - 在c程序中的数字斐波那契之间输出','
- python - ipywidgets 和 pandas 数据框
- algorithm - 给定距离矩阵的最可能拓扑顺序
- php - 对 PHP 中“复杂”API 的 json 结果进行排序
- java - 无法使用 Spring RestTemplate 客户端将请求参数发送到 HttpServeletRequest doPost
- html - Chrome 尝试将简单的 html 文档打印为 31K+ 空白页面
- java - jOOQ JSON 查询结果为 ORA-00979
- java - 从 Swagger 模型中排除实体