mysql索引最左匹配规则

        在各种查询优化中,都会去建立索引,一些比较复杂的查询更可能会用到联合索引,跟单个索引一样,联合索引也有失效的时候,例如范围查询的时候(like,in,大于,小于,between)会使索引失效,停止匹配,这里要提醒自己like匹配的时候有且只有一个%在右边,索引是生效的。

        建立联合索引的原则:选择区分度高的列作为索引(区分度可以这样计算:count(distinct column),使用得到的值来跟count(1)比对,差距越小区分度越高)

        对于联合索引是如何匹配,需要先了解下数据库联合索引的数据存储,数据库的存储是B-TREE:

当创建一个索引的时候例如创建索引(a,b,c),会在4,10,16节点存储相应的索引key,查询语句带有a,b,c的时候,会先在key中匹配a,匹配到的集合,会在匹配b,然后在匹配完b的集合中匹配c;如果没有a,将不会去直接匹配后面的b,自然也不会匹配c,所以索引失效了;如果sql中只有a,c条件,匹配完a的时候会在匹配集合中再去匹配b,但是b不存在,所以不会再继续去匹配c,c失效了。

在实际开发中,如果想确定索引是否生效可以在查询语句前增加explain来查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值