[DB] Index Nested Loop Join(索引嵌套循环连接)

Index Nested Loop Join(索引嵌套循环连接)

Index Nested Loop Join 是一种利用索引加速连接操作的算法,通过将内表的索引用于快速查找匹配记录,显著减少 I/O 操作。

 

 

优缺点

优点
  1. 快速查找: 利用索引定位内表记录,避免完整扫描内表。
  2. 高效: 索引查找成本 CCC 通常较低(例如 B+树索引的查找成本接近 log⁡N)。
缺点
  1. 依赖索引: 内表必须有索引,否则无法使用这种算法。
  2. 索引查找成本: 如果索引查找不够高效,或者索引高度较高,成本会增加。
  3. 随机访问: 索引查找可能导致较多的随机 I/O,尤其当内表数据未按索引顺序存储时。

性能对比与适用场景

特点Index Nested Loop JoinBlock Nested Loop Join
内表的访问方式使用索引快速查找完整扫描内表
外表的加载方式每次一条记录每次加载一个块
适用场景内表有索引,且索引查找成本低无索引,或者内存有限,适合小外表
I/O 模式随机 I/O(索引查找)顺序 I/O(完整扫描)
总成本公式M+(m⋅C)M+⌈M/(B−2)⌉⋅N

总结

  1. 核心原理: 利用内表的索引,加速 Join 操作。
  2. 通俗比喻: 用电话号码簿查找联系人,避免挨家挨户敲门。
  3. 适用场景: 内表有索引,外表较小或查询条件明确时效果显著。
  4. 局限性: 依赖索引支持,且可能产生随机 I/O。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值