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

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

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

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

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

SELECT A1_ID, A2_ID
FROM A
WHERE A2_ID = :A2_ID
START WITH A2_ID = :A2_ID AND
    A1_ID IN (
        SELECT A1_ID
        FROM A
        WHERE A2_ID = :A2_ID /* Conditional clause of the value I want */
            )
CONNECT BY PRIOR A1_ID = PARENT_A1_ID

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

暂无答案!

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

相关问题