oracle索引列like走索引吗,sql – Oracle查询在索引号列上使用“like”,性能不佳

在查询1上,正在执行全表扫描,即使id是索引列.查询2实现了相同的结果,但更快.如果查询1运行返回索引列,那么它将快速返回,但如果返回非索引列,或者整个行是查询需要更长时间.

在查询3中,它运行速度很快,但是“代码”列是VARCHAR2(10)而不是NUMBER(12),并且与“id”相同.

为什么Query 1不能拿起它应该使用索引?有什么应该改变,以允许索引号码列执行更快?

[查询1]

select a1.*

from people a1

where a1.id like '119%'

and rownum < 5

解释计划

SELECT STATEMENT ALL_ROWS

成本:67字节:2,592基数:4

2 COUNT STOPKEY

1表访问全表人

费用:67字节数:3,240基数:5

[查询2]

select a1.*

from people a1, people a2

where a1.id = a2.id

and a2.id like '119%'

and rownum < 5

解释计划

SELECT STATEMENT ALL_ROWS

费用:11字节:2,620基数:4

5 COUNT STOPKEY

4表格索引索引ROWID TABLE people

费用:3字节数:648基数:1

3个NESTED LOOPS

费用:11字节:2,620基数:4

1索引快速全扫描索引people_IDX3

费用:2字节:54,796基数:7,828

2 INDEX RANGE SCAN INDEX people_IDX3

费用:2基数:1

[查询3]

select a1.*

from people a1

where a1.code like '119%'

and rownum < 5

解释计划

SELECT STATEMENT ALL_ROWS

费用:6字节:1,296基数:2

3 COUNT STOPKEY

2表格访问索引ROWID TABLE人

费用:6字节:1,296基数:2

1 INDEX RANGE SCAN INDEX people_IDX4

成本:3基数:2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值