oracle left join走不到索引问题分析

本文探讨了在SQL中使用LEFT JOIN及等价的(+)操作符时索引的应用问题。作者通过实验发现,在数据量较小的情况下,即使对关联字段建立了联合索引,也无法有效利用这些索引进行查询优化。但在生产环境中,随着数据规模增大至百万级别,索引的作用开始显现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写了个left join语句,如下:

select A.c,B.d

from A

left join B

on A.a = B.a

and A.b = B.b

对A表的a, b字段和B表的a, b字段都建了联合索引, 发现on后的条件怎么也走不到索引

查到有个说法是只有where后的语句可以走到索引,试着改为(+)

select A.c,B.d

from A, B

where A.a = B.a(+)

and A.b = B.b(+)

一样走不到索引。

查到有说法是left join和 (+)其实一样一样的。

会不会测试环境 的数据量太小了?

果然是,测试环境只有100条数据,生产上数据量为100万,在生产上就生效了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值