索引的是使用规则

单例索引

SELECT uid FROM people WHERE name = ‘xuwuji’ AND gender = ‘M’

  1. 对name列建立索引,这样就把范围限制在name=‘xuwuji’的结果集上
  2. 之后再对这个结果集进行扫描 寻找满足gender = ‘M’得到最终结果
  3. 在MySQL中执行查询时,只能使用一个索引
  4. 如果我们在name, gender上分别建立索引。执行查询时,MySQL会自动选择一个最严格,也就是获得结果集纪录数最少的索引。(姓名重名的一定比性别重复的少)

联合索引

  1. 建立一个联合索引(a,b,c),实际相当建了(a), (a, b), (a, b,c)三个索引
  2. 在创建多列索引时,要根据业务需求,where字句中使用最频繁的一列放在最左边
  3. B+树是按照从左到右的顺序来建立,当(a,b,c)这样的数据来检索的时候:
    1. 比较a来确定下一步的搜索方向
    2. 如果a相同再依次比较b
    3. 如果b相同再比较c,最后得到检索的数据

最左匹配原则

当使用(b,c)但没有a进行查找时,B+树不知道首先检查哪个节点,因为通过(a、b、c)建立的B+树第一个比较因子永远是a,所以必须要先根据a来搜索才知道下一步去哪里查询。

当使用(a、c)来查找时,B+树首先根据a来查找,但下一个字段b的缺失,所以只能把符合a的数据都找到,然后再从得到的结果集里面扫描,得到能够匹配字段c的数据,也就是意味着(a,c)会使用联合索引,但只有字段a才生效。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值