我查询从3个表构建的视图。主表由一列连接,该列在表A中被索引,在表B中为PK。 该视图具有条件中使用的其他列,但未建立索引。 似乎来自该表的一个简单查询正在使用主键,但也以完全表访问权限访问该表。 我需要解释为什么会发生这种情况以及如何使其变得更好。 下面的示例代码中的Tabc很小,因此应该可以完全访问。
create or replace view v_per_pda
as select cola, colb, case when colc = 51 then colc else 0 end decd
from taba, tabb, tabc
where taba.id = tabb.id
and tabb.cold = 1
and taba.id2 = tabc.id2
在下面的解释计划中,您可以看到: taba是通过索引范围扫描访问的,而tabb是通过主键访问的 下表中的完整表访问与表b有关。 oracle为什么使用它?
答案 0 :(得分:0)
我咨询了DBA,在使用plan_table执行说明计划后,pl sql开发人员显示的是自适应说明计划-您看不到表访问已满。而且,它更准确。
所以谢谢你,这个问题是封闭的问题