sql—在oracle执行计划中,有没有办法用索引范围扫描替换索引快速完全扫描?

omjgkv6w  于 2021-07-27  发布在  Java
关注(0)|答案(0)|浏览(326)

这是一个表a,表a的主键是a1\u id和a2\u id。为了避免父表a1\u id的表满扫描,创建了一个索引。

  1. /* The status of the index is as follows. */
  2. A_PK_IDX | UNIQUE | A1_ID | POSITION 1
  3. A_PK_IDX | UNIQUE | A2_ID | POSITION 2
  4. PARENT_A1_ID_IDX | NONUNIQUE | PARENT_A1_ID | POSITION 1

我在oracle11g中执行这个查询。在这个执行计划中,父索引的索引和索引的主键唯一索引分别执行快速全扫描。

  1. SELECT A1_ID, A2_ID
  2. FROM A
  3. WHERE A2_ID = :A2_ID
  4. START WITH A2_ID = :A2_ID AND
  5. A1_ID IN (
  6. SELECT A1_ID
  7. FROM A
  8. WHERE A2_ID = :A2_ID /* Conditional clause of the value I want */
  9. )
  10. CONNECT BY PRIOR A1_ID = PARENT_A1_ID

我用提示改变快速全扫描范围扫描,但它没有工作。
如何将此执行计划更改为范围扫描?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题