【问题标题】:Why explain plan uses INDEX UNIQUE SCAN and TABLE ACCESS FULL?为什么解释计划使用 INDEX UNIQUE SCAN 和 TABLE ACCESS FULL?
【发布时间】:2020-01-12 02:52:58
【问题描述】:

我查询由 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 使用这个?

【问题讨论】:

  • 为了清楚起见,解释计划中的 tabc 也被索引范围扫描访问。底部的。
  • 请将执行计划以文本形式发布,包括表名和谓词。详情请见here
  • 我按照你的要求做了,但它给了我一个不同的执行计划。我想重新检查一下。

标签: oracle sql-execution-plan


【解决方案1】:

我咨询了一位 DBA,pl sql 开发人员在使用 plan_table 执行解释计划后显示的是自适应解释计划 - 你看不到表访问已满。而且,它更准确。

所以谢谢你,这个问题是一个封闭的问题

【讨论】:

    猜你喜欢
    • 2020-04-23
    • 2014-12-06
    • 1970-01-01
    • 2023-03-16
    • 2019-08-25
    • 2015-11-04
    • 2011-03-03
    • 1970-01-01
    相关资源
    最近更新 更多