sql优化(五):表连接

35 篇文章 10 订阅 ¥19.90 ¥99.00

一、嵌套循环(NESTED LOOPS)

***算法:驱动表返回一行数据,通过连接列传值给被驱动表,驱动表返回多少行,被驱动表就要被扫描多少次***
  1. 被驱动表必须走索引。如果被驱动表的连接列没在索引中,那么被驱动表只能走全表扫描,而且是反复多次全表扫描。当被驱动表很大的时候,sql就执行不出结果
  2. 被驱动表走索引只能走index unique scan或者index range scan,不能走table access full,不能走index full scan,不能走index skip scan,也不能走index fast full scan
  3. 两表返回少量数据才能走嵌套循环。如果两表关联返回100万条数据,那么被驱动表走索引就会返回一百万次回表。回表一般是单块读,这个时候sql性能极差
  4. 当两表为外关联的时候,如果执行计划是嵌套循环连接,驱动表只能是主表,使用hint也不行
select /*+ use_nl(e,d) leading(d) */ *
  from emp e
  left join dept d
    on e.deptno =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱夜来香A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值