MySQL的索引合并

Intersection合并

合并逻辑

SELECT * FROM test WHERE name = ‘a’ AND rmk = ‘b’;

  • 从第一个索引中获取相关的记录
  • 从第二个索引中获取相关的记录
  • 筛选俩次结果ID相同的
  • 回表查询
触发的必然条件(满足该条件可能触发,但是更大的可能性不触发)
  • 等值匹配
  • 主键列可以是范围匹配:可以用二级索引排序后,进行回表查询

Union合并

  • 等值匹配
  • 主键列可以是范围匹配
  • 使用Intersection索引合并的搜索条件:合并后继续合并

Sort-Union合并

SELECT * FROM test WHERE name > ‘a’ AND rmk < ‘b’;

  • 从第一个索引中获取相关的记录,ID排好序
  • 从第二个索引中获取相关的记录,ID排好序
  • 筛选俩次结果ID相同的
  • 回表查询

联合索引替代Intersection索引合并

SELECT * FROM test WHERE name = ‘a’ AND rmk = ‘b’;

  • 这个sql可以直接创建一个name,rmk的联合索引来优化!

结束语

  • 获取更多有价值的文章,让我们一起成为架构师!
  • 关注公众号,可以让你逐步对MySQL以及并发编程有更深入的理解!
  • 这个公众号,无广告!!!每日更新!!!
    作者公众号.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值